В рамках моего приложения Java Я использую Коллекцию Перечисления следующим образом:Именования политики для @Enumerated @ElementCollection
@ElementCollection
@Enumerated(EnumType.ORDINAL)
protected Set<Tag> tags = new TreeSet<>();
Однако это определение дано в @MappedSuperClass
и поэтому я не могу быть определяющим name
в @JoinTable
как имя будет сталкиваются внутри дочерних классов. Моя проблема в том, что политика именования по умолчанию для спящего режима игнорируется. Например, для унаследованного класса Event
вместо таблицы с именем event_tags
, hibernate пытается использовать Event_tags
, а вместо поля event_id
он пытается использовать Event_id
. Мне кажется, что Hibernate полностью игнорирует политику именования и просто использует имена сущностей без каких-либо изменений.
Как я могу заставить его использовать политику именования по умолчанию?
В качестве несвязанного примечания всегда используйте 'EnumSet', если ваш тип элемента является перечислением; он маленький и очень быстрый. – chrylis
Ну, я не хочу использовать EnumSet, поскольку этот Enum имеет размер 1000, и у меня обычно есть только несколько элементов в наборе. Если вы проверите реализацию, вы увидите, что она выделяет память для всех элементов, что нежелательно в моем случае. –