hibernate表关系注解方式

来源:互联网 发布:三了个七淘宝 编辑:程序博客网 时间:2024/05/17 23:24

UserBO端(UserBO<—->RightsBO单向关联):
//多对多关系 :多个(一个)用户对应多个权限
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
//name:中间表名称 SYS_USER_RIGHTS,joinColumns:本类UserBO映射表中id字段对应中间表中的USER_ID字段
//inverseJoinColumns:另外一端映射表中id字段对应中间表中的RIGHTS_ID字段
@JoinTable(name = “SYS_USER_RIGHTS”, joinColumns = @JoinColumn(name = “USER_ID”, referencedColumnName = “id”), inverseJoinColumns = @JoinColumn(name = “RIGHTS_ID”, referencedColumnName = “id”))
private Set rightsList = new HashSet();

UserBO端(UserBO<—->UserGroupBO双向关联):
//多对多关系:多个(一个)用户可以对应多个用户组
@ManyToMany(fetch = FetchType.EAGER)

//name:中间表名称 SYS_GROUP_USER,joinColumns:本类UserBO映射表中id字段对应中间表中的USER_ID字段                              //inverseJoinColumns:另外一端映射表中id字段对应中间表中的GROUP_ID字段@JoinTable(name = "SYS_GROUP_USER", joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "GROUP_ID", referencedColumnName = "id"))private Set<UserGroupBO> groupsList = new HashSet<UserGroupBO>();

UserGroupBO端(UserBO<—->UserGroupBO双向关联):

//多对多关系:多个(一个)用户组可以对应多个用户
@ManyToMany(fetch = FetchType.EAGER)
//name:中间表名称 SYS_GROUP_USER,joinColumns:本类UserGroupBO映射表中id字段对应中间表中的GROUP_ID字段
//inverseJoinColumns:另外一端映射表中id字段对应中间表中的USER_ID字段
@JoinTable(name = “SYS_GROUP_USER”, joinColumns = @JoinColumn(name = “GROUP_ID”, referencedColumnName = “id”), inverseJoinColumns = @JoinColumn(name = “USER_ID”, referencedColumnName = “id”))
private Set usersList = new HashSet();

//多对一关系(双向关联):多个(UserGrouprights)对应一个用户组
//USER_GROUP_ID外键对应UserGrouopBO中的主键id
@ManyToOne
@JoinColumn(name=”USER_GROUP_ID”,nullable = false)
private UserGroupBO userGroupBO;
// mappedBy这个属性 (由多的一方维护关系)
@OneToMany(mappedBy = “userGroupBO”, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set userGroupRightsList = new HashSet();

//多对一关系(单向关联): 多个(UserGrouprights)对应一个权限
// RIGHTS_ID外键对应RightsBO中的主键id
@ManyToOne
@JoinColumn(name=”RIGHTS_ID”,nullable = false)
private RightsBO rightsBO;

防止产生第三张表:加上@JoinColumn注解或者使用mappedBy属性;
注意:mappedBy会与@JoinColumn冲突,两者只能选其一

将维护权限交给多的一方,添加数据时候先保存一的一方