Как определить индексы для поля карты сущностей с помощью jpa / hibernate? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть объект с полем Map ElementCollection. Я знаю, что с Jpa вы можете определять индексы для обычных полей, используя аннотацию @Index на уровне класса. Проблема в том, что мое поле коллекции элементов карты создает таблицу соединений, которая не создается аннотированным классом @Entity. Поэтому я не могу использовать аннотации @Index. Есть ли способ Jpa / Hibernate для определения индексов для полей в этой соединительной таблице, или мне придется определять их вручную? Вот поле карты.

@ElementCollection
@MapKeyJoinColumn(name = "language_id")
@CollectionTable(name="language_plantTypeNameTranslations",
        joinColumns=@JoinColumn(name="plantTypeNameTranslations_id"))
private Map<Language, String> plantTypeNameTranslations;

Спасибо

1 Ответ

1 голос
/ 13 октября 2019

@CollectionTable имеет свойство indexes, которое работает в основном так же, как @Table.indexes.

В качестве примечания я бы серьезно подумал о переходе на инструмент управления версиями базы данных, такой как Liquibase или Flyway, особенно для таких вещей, как индексы. Индексы на самом деле не являются частью модели данных, они также приходят и уходят, так как требования к качеству, количеству и запросам данных изменяются в вашей базе данных. Управление ими с использованием аннотаций исходного кода делает их довольно негибкими.

...