Запрашивание коллекций типа значения в Criteria API в режиме гибернации
Вопрос
В моей базе данных у меня есть таблица сущностей (давайте назовем ее Entity).Каждая сущность может иметь несколько типов сущностей, и набор типов сущностей является статическим.Следовательно, существует связующая таблица, содержащая строки идентификатора объекта и имени типа объекта.В моем коде EntityType - это перечисление, а Entity - класс, отображенный в режиме гибернации.
в коде объекта сопоставление выглядит следующим образом:
@CollectionOfElements
@JoinTable(
name = "ENTITY-ENTITY-TYPE",
joinColumns = @JoinColumn(name = "ENTITY-ID")
)
@Column(name="ENTITY-TYPE")
public Set<EntityType> getEntityTypes() {
return entityTypes;
}
О, я упоминал, что использую аннотации?
Теперь, что я хотел бы сделать, это создать запрос HQL или выполнить поиск с использованием критерия для всех объектов Entity определенного типа entity.
Это страница на форуме Hibernate гласит, что это невозможно, но тогда этой странице 18 месяцев.Кто-нибудь может сказать мне, была ли эта функция реализована в одном из последних выпусков Hibernate или запланирована на следующий выпуск?
Решение
HQL:
select entity from Entity entity where :type = some elements(entity.types)
Я думаю, что вы также можете написать это следующим образом:
select entity from Entity entity where :type in(entity.types)
Другие советы
Являются ли ваши отношения двунаправленными, т. е. EntityType
иметь возможность Entity
собственность?Если это так, вы, вероятно, можете сделать что-то вроде entity.Name from EntityType where name = ?