JPA ключ карты один ко многим - PullRequest
2 голосов
/ 28 марта 2011

У меня есть следующее

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

Я хочу использовать атрибут имени объекта Role в UserRole в качестве ключа для карты. Как это можно сделать.@MapKey (name = "role.name") не работает.

My UserRole.java имеет следующее

@ManyToOne
@JoinColumn(name="roleId")
private Role role;

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

В JPA @MapKey может быть только локальным полем.Вы можете попытаться использовать просто «роль» в качестве ключа, так как это должно быть похоже на использование имени роли.Или сопоставьте имя роли в пользовательской роли.Вы также можете просто отобразить его как List или Set и просто определить методы в своем классе для доступа к нему по ключу.

Если вы используете EclipseLink, вы также можете использовать метод в качестве ключа карты, чтобыопределите getRoleName () в UserRole, которое возвращает имя роли, и используйте его с @ MapKey.

1 голос
/ 28 марта 2011

Я стреляю в темноте:)

Если вы хотите использовать атрибут имени объекта Role в UserRole в качестве ключа для карты. вы можете попытаться сделать атрибут name в объекте Role как @Id. Тогда ваш @MapKey (name = "role")

Надеюсь, это поможет. мы можем обсудить больше, если это поможет. Я тоже сейчас пытаюсь понять такие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...