如何检索JPA的记录,也是一个字段值
问题描述:
请考虑以下实体:如何检索JPA的记录,也是一个字段值
@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()或任何其他休眠等价物一次来计算值?
我使用Oracle 11g和JPA(Hibernate实现3.6)
在此先感谢。
答
我觉得“count”是一个保留字。我会重新组织您的查询,如下所示:
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”。
什么是代码中的“builder”? – 2013-04-21 15:49:28
对不起,我用myQuery取代了它... – 2013-04-22 08:11:46