使用JPQL

时间:2016-09-18 11:32:00

标签: json hibernate jpql

我正在使用Hibernate,我正在尝试返回有关用户的一些信息,这些信息保存在2个单独的表中。

我所提出的问题:

@Entity(name = "Users")
@Table(name = "Users")
@NamedQueries(
        { 
        @NamedQuery(name = QueryNames.QUERY_USER_GET_ALL_USERS_BASIC_INFO,
                    query = "select u.userId, p.personName, p.personMobile, p.personEmail, u.userStaus, u.usertype, p.personNotes "
                          + "FROM Person p JOIN User u ON p.personId = u.userPersonId "
                          + "Where u.Active = 1")
        })

public class User
{ ... }

我创建了一个名为BasicUserInfo的类来包含我在select子句中返回的所有成员(只是一个只有成员的类,没有Json目的的方法)。

我试图让它发挥作用的方式是这样的:

List<BasicUserInfo> list = list(namedQuery(QueryNames.QUERY_USER_GET_ALL_USERS_BASIC_INFO));

但是,由于上面激活的最后一行出现错误,因此无法编译:

  

类型不匹配:无法从List<User>转换为List<UserBasicInfo>

如何使查询返回我想要的列表类型?或者甚至只是Object[]的列表也有利于Json的目的。

1 个答案:

答案 0 :(得分:0)

我最终做的是将查询更改为以下开头:

"select new com.myPackage.Users.UserBasicInfo(u.userId, p.personName, p.personMobile, p.personEmail, u.userStaus, u.usertype, p.personNotes) ...

类型需要有一个构造函数,它接受查询返回的参数。