我想知道使用Criteria API对象是否容易执行oracle INTERSECT。
使用Hibernate 3.2
EX。我想要'table'中存在的所有t.value,其名称是dora和diego。
从表t中选择t.value,其中t.name ='Dora'
INTERSECT
从表t中选择t.value,其中t.name ='Diego'
我想我将不得不使用Restriction sqlRestriction或编写一个调用它的oracle存储过程。还有其他建议吗?
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();
答案 0 :(得分:1)
看起来目前不支持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')
答案 1 :(得分:0)
为什么不只是:
select t.value from table t where t.name in ('Diego', 'Dora' )
永远不要试图忽略 sql 的力量。