环境:JPA 1,Hibernate 3.3.x
我有一个JPA实体类(User),如何有选择地获取成员变量say(first_name,last_name),而不是使用JPA api获取所有用户属性。
答案 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
}