Объединить поля из связанной таблицы на карту - PullRequest
0 голосов
/ 16 августа 2011

Здравствуйте, у меня есть две таблицы: роли и разрешения. Роли имеют имя и другие вещи. В разрешениях есть id, idrole, строка sname и логическое значение bcanmodify. (Отношение много к одному между ролью и разрешением)

Я хотел бы иметь только один класс сущностей Hibernatee для роли и иметь карту, где ключи будут значениями sname из установленных разрешений, а значения будут значениями bcanmodify. Это возможно? Какие аннотации мне следует использовать?

Ответы [ 2 ]

1 голос
/ 17 августа 2011

нижеописанный способ работает для меня, и я считаю, что он соответствует вашим требованиям; приведенный ниже код входит в роль сущности, и вам не нужно определять разрешения для сущности. Но имейте в виду, что столбец, который вы хотите использовать в качестве ключа карты, должен иметь уникальное ограничение, определенное в таблице, как здесь у вас должны быть значения sname, уникальные в таблице разрешений

@ElementCollection
@CollectionTable(name="permissions",joinColumns=   @JoinColumn(name="role_id",referencedColumnName="role_id")})
@MapKeyColumn(name="sname")
@Column(name="bcanmodify")
private Map<String,Boolean> permissions;
0 голосов
/ 16 августа 2011

AFAIK, самое близкое, что вы можете сделать, это иметь Map<String, Permission> в вашей Role сущности.

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