考虑以下实体:
@Entity
public class User {
private int id;
private String name;
private String family;
//getters and setters
}
和 sql:
select *
from (select row_.*, first_Value(rownum) over (order by rownum desc) countـ
from (select * from user) row_)
正如您可能猜到的,sql 的结果集由四列组成:
id, name, family, countـ
我通过以下方式检索用户表记录作为用户列表:
String myQuery = "select * from (select row_.*, first_Value(rownum) over (order by rownum desc) count_
from (select * from user) row_)"
Query query = entityManager.createNativeQuery(myQuery, User.class);
List<User> users = query.getResultList();
现在的问题是,如何仅通过调用一次 getResultList() 或任何其他 hibernate 等效项来检索用户列表并计算值?
我使用 Oracle 11g 和 Jpa(Hibernate implementation 3.6)
提前致谢。
最佳答案
我认为“计数”是一个保留词。我会像这样重新组织您的查询:
String myQuery = "SELECT "
+ "id, "
+ "name, "
+ "family, "
+ "cnt "
+ "FROM ("
+ "SELECT "
+ "user.*, "
+ "first_Value(rownum) over (order by rownum desc) AS cnt "
+ "FROM "
+ "user "
+ ")";
Query query = entityManager.createNativeQuery(myQuery);
List<Object[]> resultList = query.getResultList();
当然,您也可以使用 * 代替“id、name、family、cnt”。
关于hibernate - 如何在 jpa 中检索记录和字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130476/