Инструкция Hql «in» не работает с @ElementCollection

#java #hibernate #jakarta-ee #hql

#java #переход в спящий режим #джакарта-ee #hql

Вопрос:

У меня есть свойство коллекции классов с @ElementCollection и @Enumerated(EnumType.ORDINAL)
Я пытаюсь выполнить инструкцию in для этой коллекции, однако в сгенерированном sql я получаю это -> {non-qualified-property-ref} in (?)

Возможно, я делаю что-то неправильно при создании самого hql. Может ли это быть потому, что элементы на самом деле являются значениями enum?

Спасибо, Питер

Ответ №1:

Вы должны быть в состоянии сделать это, используя выражение «in elements», согласно документации ( http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html ):

 select mother from Cat as mother, Cat as kit
where kit in elements(foo.kittens)
  

Однако в режиме гибернации есть открытая ошибка… это работает не так, как можно было бы ожидать для значений enum, см.:https://hibernate.onjira.com/browse/HHH-5159 для обхода.