Запрашивание коллекций типа значения в Criteria API в режиме гибернации

StackOverflow https://stackoverflow.com/questions/49334

  •  09-06-2019
  •  | 
  •  

Вопрос

В моей базе данных у меня есть таблица сущностей (давайте назовем ее 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 = ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top