Критерии гибернации способ обращения к in с несколькими столбцами

#hibernate #hibernate-criteria

#переход в спящий режим #критерии гибернации

Вопрос:

Хотелось бы ответить на приведенный ниже запрос с помощью способа определения критериев гибернации,

 select * from A where (type, Version) in (select type, max(Version) from A group by type)
  

рассматриваю только способ определения критериев гибернации.
пожалуйста, предложите.

Комментарии:

1. пробовал с CriteriaBuilder.in но это не позволяет более одного раза указывать несколько столбцов.

Ответ №1:

Вы можете переформулировать это с помощью подзапроса exists, который вы можете смоделировать с помощью API критериев JPA. Что-то вроде следующего:

 select * from A a where exists (select 1 from A sub group by sub.type having a.type = sub.type and a.version = max(sub.version))