【发布时间】:2013-11-25 07:12:29
【问题描述】:
我有三个表:用户、角色、董事会。每个用户可以拥有多个版块,但在一个版块中,用户只能拥有一个角色。我创建了三个类并添加了注释:
class User {
@Id
@GeneratedValue
@Column(name = "id")
private long id;
@Column(name = "mail")
private String mail;
...
@JoinTable(name = "userBoardRole",
joinColumns = @JoinColumn(name = "id", unique = false),
inverseJoinColumns = @JoinColumn(name = "role_id", unique = false))
@MapKeyJoinColumn(name = "board_id", unique = false)
@ElementCollection
private Map<Board, Role> boardRoleMap = new HashMap<Board, Role>();
}
class Role {
@Id
@GeneratedValue
@Column(name = "role_id")
private long id;
@Column(name = "name")
private String name;
...
}
class Board {
@Id
@GeneratedValue
@Column(name = "role_id")
private long id;
@Column(name = "name")
private String name;
...
}
Hibernate 创建一个新表,如下所示:
创建表
userboardrole(idbigint(20) 非空,role_idbigint(20) 非空,board_idbigint(20) 非空, 主键 (id,board_id), 唯一键UK_3lunj2moakkbpehqwqkjcvlf4(role_id), 键FK_3lunj2moakkbpehqwqkjcvlf4(role_id), 键FK_ta3fwgh4sln85f6f3jjbte38u(board_id), 键FK_lgd2b2mph9qoc1pe2h9r2wu8u(id), 约束FK_lgd2b2mph9qoc1pe2h9r2wu8u外键(id)参考users(id), 约束FK_3lunj2moakkbpehqwqkjcvlf4外键(role_id)参考boardrole(role_id), 约束FK_ta3fwgh4sln85f6f3jjbte38u外键 (board_id) 参考boards(board_id) ) ENGINE=InnoDB 默认字符集=utf8;
问题在于role_id 列是唯一的。有没有办法使用注释将唯一的列设置为false?感谢您的帮助。
我使用的是休眠 4.2.2。
【问题讨论】:
-
我认为在您的地图中添加 @ManyToMany 注释将删除唯一的 role_id 约束。
标签: java mysql hibernate jpa hibernate-annotations