作为条件查询的一部分,Hibernate分离查询 [英] Hibernate detached queries as a part of the criteria query

查看:157
本文介绍了作为条件查询的一部分,Hibernate分离查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 您可以请java专家帮我编写分离查询作为以下SQL语句的条件查询的一部分。选择A. * 
FROM AETABLE A
不存在

选择entryid
FROM AETABLE B
其中B.classpk = A.classpk
和B.userid = A.userid
和B.modifiedDate> A.modifiedDate

和userid = 10146


解决方案

您需要编写相关子查询。假设属性/类名匹配上面的列/表名:

  DetachedCriteria子查询= DetachedCriteria.forClass(AETable.class,b )
.add(Property.forName(b.classpk)。eqProperty(a.classpk))
.add(Property.forName(b.userid)。eqProperty(a 。))
.add(Property.forName(b.modifiedDate)。gtProperty(a.modifiedDate));

Criteria criteria = session.createCriteria(AETable.class,a)
.add(Property.forName(userid)。eq(new Integer(10146)))
.add(Subqueries.notExists(subquery);


java experts can you please help me write detached queries as a part of the criteria query for the following SQL statement.

select A.*
FROM AETABLE A
where not exists
(
    select entryid
    FROM AETABLE B
    where B.classpk = A.classpk
    and B.userid = A.userid
    and B.modifiedDate > A.modifiedDate
)
and userid = 10146

解决方案

You need to write a correlated subquery. Assuming property / class names match column / table names above:

DetachedCriteria subquery = DetachedCriteria.forClass(AETable.class, "b")
 .add(Property.forName("b.classpk").eqProperty("a.classpk"))
 .add(Property.forName("b.userid").eqProperty("a.userid"))
 .add(Property.forName("b.modifiedDate").gtProperty("a.modifiedDate"));

Criteria criteria = session.createCriteria(AETable.class, "a")
 .add(Property.forName("userid").eq(new Integer(10146)))
 .add(Subqueries.notExists(subquery);

这篇关于作为条件查询的一部分,Hibernate分离查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆