Java 如何在Hibernate标准中表达此SQL(可能吗?)
请看看这个答案: 基本上,当存在ORDERBY子句时,获取行的位置。是否可以在Hibernate标准中表达这一点 这是我的问题。我真正想要的是一种优雅的方式来设置动态where子句参数:Java 如何在Hibernate标准中表达此SQL(可能吗?),java,sql,hibernate,hibernate-criteria,Java,Sql,Hibernate,Hibernate Criteria,请看看这个答案: 基本上,当存在ORDERBY子句时,获取行的位置。是否可以在Hibernate标准中表达这一点 这是我的问题。我真正想要的是一种优雅的方式来设置动态where子句参数: SELECT x.id, x.position FROM (SELECT dwq.id, @rownum := @rownum + 1 AS position FROM default_work_queue dwq JO
SELECT x.id,
x.position
FROM (SELECT dwq.id,
@rownum := @rownum + 1 AS position
FROM default_work_queue dwq
JOIN (SELECT @rownum := 0) r
WHERE dwq.type=4 *AND FOO=BAR*
ORDER BY dwq.description ASC) x
WHERE x.id=540;
也就是说,我希望能够在查询的注释部分添加0-n个额外的“和foo=bar”,而无需进行大量的字符串操作。使用条件是不可能的,因为条件不支持FROM子句中的任意sql。然而,对于这个查询,这里有另一个想法
// select the count of all elements before the wanted element
int position = session.createCriteria(Work.class)
.add(restrictions)
.add(Subqueries.lt("description", DetachedCriteria.For(Work.class)
.add(Restriction.eq("id", id))
.setProjection(Projection.Property("description"))))
.setProjection(Projection.RowCout())
.UniqueResult<int>();
//选择所需元素之前所有元素的计数
int position=session.createCriteria(Work.class)
.add(限制)
.add(subquerys.lt(“description”),DetachedCriteria.For(Work.class)
.add(Restriction.eq(“id”,id))
.setProjection(Projection.Property(“description”))
.setProjection(Projection.RowCout())
.UniqueResult();
如果已经加载了描述,则可以优化子查询