我试图在hibernate“标准”(不是在hql)中进行查询,但我没有得到做什么或使用什么.
select * from foo where column1 = 8 and column2 not in (
select column2 from foo where column1 = 11
)
我使用两个不同的查询,然后使用Java函数来获取结果,但我需要一个单一的标准查询.
最佳答案
Modulo知道你的实际实体映射是什么(这当然是彻底未经测试的),它很可能通过类似的东西来解决
Session hibernateSession = ... (however you get it).
DetachedCriteria d = DetachedCriteria.forClass(Foo.class)
.add(Restrictions.eq("column1", 11))
.setProjection(Projections.property("column2"));
Criteria criteria = hibernateSession.createCriteria(Foo.class)
.add(Restrictions.eq("column1", 8))
.add(Subqueries.propertyNotIn("column2", d));
List<Foo> result = criteria.list();
这几乎肯定需要调整,因为“column1”和“column2”是sql字段名称,在这些地方你需要的是java属性.
相关文章
转载注明原文:来自简单SQL查询的Hibernate条件查询(带嵌套子查询) - 代码日志