Критерии гибернации - исключение записей с одинаковым идентификатором, но разными значениями атрибута - PullRequest
1 голос
/ 01 октября 2009

Я пытаюсь найти записи, где статус = "а" для человека но исключить записи, в которых у того же человека есть другая запись со статусом = "b"

ВЫБРАТЬ * ОТ ЛИЦА, ГДЕ СТАТУС = 'а' AND Person_id НЕ ВХОДИТ (ВЫБЕРИТЕ Person_id ИЗ ЛИЧНОСТИ, ГДЕ СОСТОЯНИЕ = 'b', И Person_id НЕ НУЛЬ)

Ценю помощь

1 Ответ

0 голосов
/ 01 октября 2009

Вы можете писать подзапросы с помощью Criteria API через DetachedCriteria :

DetachedCriteria dc = DetachedCriteria.forClass(Person.class);
dc.setProjection(Property.forName("id")); // select person_id
dc.add(Property.forName("status").eq("b")); // where status = 'b'

Criteria c = session.createCriteria(Person.class);
c.add(Property.forName("id").notIn(dc)); // where id not in (above subquery)
c.add(Property.forName("status").eq("a")); // and status = 'a'
c.list(); // TODO: handle results
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...