我想創建一個新的用戶(使用實體) - 它通過一個鏈接表成員有參照組(ENTITY2)(ENTITY3)什麼休眠/ JPA註釋需要
用戶擁有一套班子作爲類變量。
當我創建我的用戶對象我想說這個用戶將成爲組的成員(有預先定義的用戶通過編號鏈接到(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);
我不斷收到錯誤,告訴我,某些列不能爲空我其實希望發生的這裏不是要插入到組表中,而是將用戶關聯到組表中的行。是否有特殊的方法可以防止組表中的列被修改?我想我需要修改鏈接表之間的映射 - 這是多大的POJO如何鏈接現在
用戶
@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;
發生了什麼是沒有關聯的鏈接會員表如此理想應該用戶有一個一組成員對象而不是一組組?
感謝 - 這是相當難以解釋很抱歉,如果這是很難理解
如果你是休眠,會怎樣您嘗試在'中映射字符串'用戶名' User'和'Group'中的整數'id'?請注意,'Member'在任何情況下都與兩者都沒有關係 - 至少從Hibernate的角度來看並非如此。你可能希望'User'擁有一組'Member'(並且它們具有對'User'的反引用並且是該關係的所有者),並且'Member'與'Group'具有'ManyToOne'關係。 – Thomas
「成員」與任何其他對象沒有關係,所以不是「鏈接表」! –