我有以下内容
@OneToMany(mappedBy="role")
@MapKey(name="role.name")
private Map<String,UserRole> userRoles = new HashMap<String,UserRole>();
我想使用 UserRole 中 Role 对象的 name 属性作为 Map 的键,我该如何实现这一点。 @MapKey(name="role.name") 不起作用。
我的 UserRole.java 有以下内容
@ManyToOne
@JoinColumn(name="roleId")
private Role role;
最佳答案
在 JPA 中,@MapKey 只能是本地字段。 您可以尝试仅使用“角色”作为键,因为它应该类似于使用角色名称。 或者,将角色名称映射到 UserRole。 您还可以将其映射为 List 或 Set,并在类中定义方法以通过键访问它。
如果您使用 EclipseLink,您还可以使用方法作为映射键,因此您可以在 UserRole 中定义返回角色名称的 getRoleName(),并将其与 @MapKey 一起使用。
关于JPA 一对多映射键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453977/