Hibernate Criteria对象 - 执行INTERSECT

时间:2011-09-12 18:58:07

标签: hibernate criteria-api

我想知道使用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存储过程。还有其他建议吗?

解决方案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();

2 个答案:

答案 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 的力量。