Я прочитал записи на этом форуме, в которых обсуждается, как аннотировать набранную карту с помощью 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.
Но они не объясняют, как использовать явный ключ.