Критерии гибернации в пункте с 2 условиями в 1 запросе

1

Как выполнить следующий SQL-запрос с использованием запроса на спящий режим:

select * from Table1 where (A,B) in (select A,B from Table2)
  • 1
    Ты не можешь Это не поддерживается в Criteria и AFAIK, даже в HQL.
  • 0
    мы можем сделать то же самое, используя подзапросы
Теги:
hibernate

1 ответ

2

Предполагая, что у нас есть критерии для таблицы 1 и отдельные критерии для таблицы 2. Этот ниже код работает безупречно:

Criteria criteria = new Criteria(Table1.class);

DetachedCriteria dc = DetachedCriteria.forClass(Table2.class); 
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("column1"));
projList.add(Projections.property("column2"));
dc.setProjection(Projections.distinct(projList));

criteria.add(Subqueries.propertiesIn(new String[]{"column1","column2"}, dc));
  • 0
    Вы спасли меня. большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню