如何通过JPA从某个表中有选择地获取项目

时间:2010-05-15 09:12:13

标签: java hibernate orm jpa

环境:JPA 1,Hibernate 3.3.x

我有一个JPA实体类(User),如何有选择地获取成员变量say(first_name,last_name),而不是使用JPA api获取所有用户属性。

2 个答案:

答案 0 :(得分:5)

你的意思是这样的(在这种情况下,你的查询结果将是Object[]):

SELECT u.firstName, u.lastName FROM User u

或者,您可以在SELECT子句中使用构造函数表达式

SELECT NEW com.acme.example.UserDetails(u.firstName, u.lastName) FROM User u

NEW中使用的类不一定是实体,只需提供适当的构造函数。

答案 1 :(得分:2)

如果查询更多列,您将获得一个对象结果,您必须将其转换为对象数组以检索值。更好的方法是创建一个直接存储结果的viewObject类:

select new full.package.name.UserView(u.firstName, u.LastName) from User u

其中UserView如下所示:

class UserView {
   String firstName, String lastName;
   // getters, setters/constuctor
}