gpt4 book ai didi

java - 如何使用 JPA Criteria API 解析 Oracle 的 'rownum' 伪列?

转载 作者:搜寻专家 更新时间:2023-10-31 08:19:55 26 4
gpt4 key购买 nike

我想使用 JPA Criteria 从数据库中获取第一行。我使用 JPA、Hibernate 4.2.7。在 SQL 中,语句如下所示:

SELECT * FROM houses WHERE rownum = 1;

我要实现的 Java 代码如下所示:

    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<House> query = builder.createQuery(House.class);
Root<House> root = query.from(House.class);

query.select(root).where(builder.equal(root.get("rownum"), 1));

TypedQuery<House> tQuery = entityManager.createQuery(query);
House house = tQuery.getSingleResult();

但是 'rownum' 伪列无法解析,出现异常:

 java.lang.IllegalArgumentException: Unable to resolve attribute [rownum] against path
at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:120)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:229)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:200)

是否可行,如果可行,如何使用 Criteria API 获取“rownum”伪列?感谢您的任何建议。

最佳答案

您可以使用 setFirstResult 和 setMaxResults 完成此操作。

session.createCriteria(Foo.class)
.setFirstResult(0)
.setMaxResults(1);

关于java - 如何使用 JPA Criteria API 解析 Oracle 的 'rownum' 伪列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20911763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com