Hibernate Criteria объект - выполнить ИНТЕРСЕКТ - PullRequest
3 голосов
/ 12 сентября 2011

Мне было интересно, легко ли выполнить оракул ИНТЕРСЕКТ, используя объект API Criteria.

Используя Hibernate 3.2

EX.Я хочу, чтобы все t.value, которые существуют в «таблице», где имена - Дора и Диего.

ВЫБРАТЬ t.value из таблицы t, где t.name = 'Dora'

INTERSECT

ВЫБРАТЬ t.value из таблицы t, где t.name = 'Diego'

Ядумая, что мне придется использовать Restriction sqlRestriction или написать хранимую процедуру оракула, которая вызывает это.Любые другие предложения?

Решение 1:

    Session sessionFactory = sessionFactory.getCurrentSession();         
    String intersetSQLQuery = "SEE QUERY STRING BELOW";     
    SQLQuery query = sessionFactory.createSQLQuery( intersetSQLQuery );
    query.addScalar( hibernate_mapped_field_name,Hibernate.STRING);
    //Returns a list of string objects
    nameList = query.list();

1 Ответ

1 голос
/ 12 сентября 2011

Похоже, что Intersect в настоящее время не поддерживается. Смотри https://hibernate.onjira.com/browse/HHH-1050

Возможно, вам удастся сойти с рук что-то вроде

select t.value from table t 
where t.name = 'Diego' 
and t.value in 
    (select t1 from table t1 
     where t1.name = 'Dora')
...