Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA一对多映射键_Jpa - Fatal编程技术网

JPA一对多映射键

JPA一对多映射键,jpa,Jpa,我有以下几点 @OneToMany(mappedBy="role") @MapKey(name="role.name") private Map<String,UserRole> userRoles = new HashMap<String,UserRole>(); 我在黑暗中拍摄:) 如果要使用UserRole中Role对象的name属性作为映射的键。您可以尝试将角色对象中的name属性设置为@Id。然后将@MapKey(name=“Role”) 希望这有帮助。如果这

我有以下几点

@OneToMany(mappedBy="role")
@MapKey(name="role.name")
private Map<String,UserRole> userRoles = new HashMap<String,UserRole>();

我在黑暗中拍摄:)

如果要使用UserRole中Role对象的name属性作为映射的键。您可以尝试将角色对象中的name属性设置为@Id。然后将@MapKey(name=“Role”)


希望这有帮助。如果这能得到帮助,我们可以讨论更多。我现在也试着理解这类东西。

在JPA中,@MapKey只能是一个本地字段。 您可以尝试仅使用“role”作为键,因为它应该类似于使用角色名称。 或者,将角色名称映射到UserRole。 您还可以将其映射为列表或集合,并在类中定义方法以通过键访问它


如果您使用的是EclipseLink,您还可以使用一个方法作为映射键,这样您就可以在UserRole中定义一个getRoleName(),返回角色的名称,并将其与@MapKey一起使用。

这是什么意思:“UserRole中角色对象的name属性”?在Role.java中,我有一个私有字符串名称;用吸气剂和setters@user373201当前位置仍然无法理解要点。您希望如何将其用作在
角色
本身中声明的映射中的键?尽管这可能是一个解决方案。我想知道是否有一种方法可以将name属性用作Id。
@ManyToOne
@JoinColumn(name="roleId")
private Role role;