Я пытаюсь создать новый пользователь (entity1) - это имеет отношение к группе (entity2) с помощью таблицы ссылки члена (entity3)Что спящий режим/JPA аннотация требуется
Пользователя имеет набор групп как переменную класса.
Когда я создаю свой объект пользователя, я хочу сказать, что этот пользователь будет членом группы n (есть предварительно определенные пользователи, к которым привязан идентификатор (1,2,3,4,5,6 ...) каждая группа имеет некоторые связанные с ним данные в таблице
Всякий раз, когда я создаю мой пользовательский объект следующим образом..
User user = new User();
user.setActive(1);
user.setCrby("me");
user.setUsername("username");
user.setCrdate("2016-06-20 12:42:53.610");
user.setCrwsref("...");
user.setModby("...");
user.setModdate("2016-06-20 12:42:53.610");
user.setModswref("..");
user.setBackground("Y");
user.setPassword("password");
user.setFullName("me");
Group group = new Group();
group.setId(1);
Group group2 = new Group();
group2.setId(2);
Set<Group> sets = new HashSet<Group>();
sets.add(group);
sets.add(group2);
user.setGroups(sets);
userDao.addUser(user);
Я постоянно получаю ошибки говоря мне, что некоторые столбцы не может быть пустым, что я на самом деле хочу, чтобы это произошло здесь не нужно вставлять в таблицу групп, а связывать пользователя с линией в таблице групп. Есть ли способ предотвратить изменение столбцов в таблице групп? Я думаю, что нужно изменить сопоставление между таблицей ссылок - это сколько POJOs ссылка прямо сейчас
пользователем
@Entity
@Table(name = "user")
public class User
{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "zmember", joinColumns = {@JoinColumn(name = "username")}, inverseJoinColumns = {@JoinColumn(name = "id")})
private Set<Group> groups = new HashSet<Group>(0);
таблицей ссылки Участник
@Entity
@Table(name = "member")
public class Member implements Serializable
{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Id
@Column(name = "sgpid")
private int sgpid;
@Column(name = "username")
private String memberUsername;
Группы
@Entity
@Table(name = "group")
public class Group
{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
Что происходит, нет никакой ассоциации с таблицей Member link, поэтому идеально должно быть у пользователя набор объектов-членов, а не набор групп?
Спасибо - это было довольно трудно объяснить, так жаль, если это трудно понять
Если вы Hibernate, как бы вы пытаетесь отобразить строку 'username' в' User' и целое 'id' в' Group'? Обратите внимание, что 'Member' не связан ни с одним, ни с другим - по крайней мере, с точки зрения Hibernate. Вероятно, вы хотите, чтобы 'User' имел набор' Member' (и у них есть обратная ссылка на 'User' и являются владельцами отношения), а' Member' имеет отношение 'ManyToOne' к' Group' , – Thomas
«Участник» не имеет отношения ни к одному другому объекту, поэтому не является «таблицей ссылок»! –