0
我已經對我的模型做了必要的更改概述here。但是,我不知道要在我的連接表實體上放什麼。休眠多對多映射,加入PK和額外的列表
請注意,我的連接表有一個代理鍵和兩個額外的列(date和varchar)。
到目前爲止,我已經得到了什麼是:
User.java
@Entity
@Table (name = "tbl_bo_gui_user")
@DynamicInsert
@DynamicUpdate
public class User implements Serializable {
private String id;
private String ntName;
private String email;
private Set<GroupUser> groupUsers = new HashSet<GroupUser>(0);
// Constructors and some getters setters omitted
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.user", cascade=CascadeType.ALL)
public Set<GroupUser> getGroupUsers() {
return groupUsers;
}
public void setGroupUsers(Set<GroupUser> groupUsers) {
this.groupUsers = groupUsers;
}
}
Group.java
@Entity
@Table (name = "tbl_bo_gui_group")
@DynamicInsert
@DynamicUpdate
public class Group implements Serializable {
private String id;
private String groupName;
private String groupDesc;
private Set<GroupUser> groupUsers = new HashSet<GroupUser>(0);
// Constructors and some getters setters omitted
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.group", cascade=CascadeType.ALL)
public Set<GroupUser> getGroupUsers() {
return groupUsers;
}
public void setGroupUsers(Set<GroupUser> groupUsers) {
this.groupUsers = groupUsers;
}
}
的問題是,我不知道該穿什麼我的連接表實體。這裏是。
GroupUser.java
@Entity
@Table (name = "tbl_bo_gui_group_user")
@DynamicInsert
@DynamicUpdate
@AssociationOverrides({
@AssociationOverride(name = "pk.user",
joinColumns = @JoinColumn(name = "id")),
@AssociationOverride(name = "pk.group",
joinColumns = @JoinColumn(name = "id")) })
public class GroupUser implements Serializable {
private String id;
private User userId;
private Group groupId;
private Date dateCreated;
private String createdBy;
// constructors and getters and setters for each property
// What now? ? No idea
}
我怎麼會寫的方法保存的數據連接表模型中的用戶和組?在你提供的鏈接上有'userService.setUser(user);',但它沒有顯示我正在尋找的連接表實體的完整想法。順便說一句,我是一個hibernate新手。 – makalshrek
@SciasTwentyThree如果你的實體*設置正確*你不需要關心。即:一個用戶,5個映射,5個組和每個組有10個額外的屬性:調用'userService.save(user)'和hibernate將持續所有61個實體(1個用戶+5映射+5組+10個屬性/ 50)),因爲它們是「連接」的。 – dognose