我有以下
@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;
答案 0 :(得分:2)
在JPA中,@ MapKey只能是本地字段。 您可以尝试仅使用“角色”作为键,因为它应该类似于使用角色名称。 或者,将角色名称映射到UserRole。 您也可以将其映射为List或Set,只需在类中定义方法即可通过键访问它。
如果您正在使用EclipseLink,您还可以使用方法作为映射键,因此您可以在UserRole中定义一个返回Role名称的getRoleName(),并将其与@MapKey一起使用。
答案 1 :(得分:1)
我在黑暗中拍摄:)
如果要在UserRole中使用Role对象的name属性作为Map的键。您可以尝试将Role对象中的name属性设置为@Id。然后你的@MapKey(name =“role”)
希望这有帮助。如果这得到了帮助,我们可以讨论更多。我现在也试着理解这种东西。