Как аннотировать картукогда ключ карты не приходит от объекта - PullRequest
1 голос
/ 07 марта 2012

Я прочитал записи на этом форуме, в которых обсуждается, как аннотировать набранную карту с помощью Hibernate, и я прочитал документы Hibernate, на которые есть ссылки здесь. Никто из них не отвечает на мой вопрос. Мой код выглядит следующим образом:

@OneToMany
@JoinTable(name="administrator_filters")
private Map<String, BaseFilter> filters;

Я хочу использовать произвольную строку в качестве ключа к этой карте, которая содержит объект BaseFilter (который является одним из моих объектов), и сохранить его в таблице соединений. Похоже, что для Hibernate требуется ключ от объекта BaseFilter в качестве ключа на карте.

вижу следующую ошибку Невозможно определить ограничение PRIMARY KEY для столбца, который может иметь значение NULL, в таблице «administrator_filters».

Я добавил nullable = false к элементам JoinColumn в аннотации JoinTable и MapKey, но всегда получаю одну и ту же ошибку.

Я мог бы добавить свойство в BaseFilter, содержащее ключ карты, но я пытаюсь этого не делать. Документы Hibernate говорят:

Maps can borrow their keys from one of the associated entity properties or have dedicated columns to store an explicit key.

Но они не объясняют, как использовать явный ключ.

1 Ответ

0 голосов
/ 09 марта 2012
@MapKey(columns = {@Column(name = "mapkeycolumn")} , targetElement = BaseFilter.class)

targetElement является необязательным при использовании общих коллекций

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