将相关表格中的字段加入Map

时间:2011-08-16 16:01:26

标签: hibernate jpa orm join map

您好我有两个表:角色和权限。角色有名字和其他东西。权限有id,idrole,字符串sname和boolean bcanmodify。 (角色和权限之间的关系多对一)

我想只有一个用于Role的Hibernatee实体类,并且有一个映射,其中键是来自reated权限的sname值,而值将是bcanmodify值。那可能吗?我应该使用哪些注释?

2 个答案:

答案 0 :(得分:1)

以下方式适合我,我相信符合您的要求;以下代码包含在实体角色中,您无需定义实体权限。但请记住,您希望使用的列作为映射键必须在表中定义唯一约束,就像在这里您必须在权限表中具有唯一的sname值

@ElementCollection
@CollectionTable(name="permissions",joinColumns=   @JoinColumn(name="role_id",referencedColumnName="role_id")})
@MapKeyColumn(name="sname")
@Column(name="bcanmodify")
private Map<String,Boolean> permissions;

答案 1 :(得分:0)

AFAIK,您可以做的最接近的是Map<String, Permission>实体中的Role

@OneToMany(mappedBy = "role")
@MapKey(name = "name")
private Map<String, Permission> permissions;