2016-09-18 56 views
0

返回自定义对象的列表我正在使用Hibernate,并试图返回有关保存在2个独立表中的用户的一些信息。使用JPQL

我所做的查询:

@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)); 

然而,这并不因为与激活的最后一行编译得到一个错误:

Type mismatch: cannot convert from List<User> to List<UserBasicInfo>

我能做些什么来使查询返回我想要的列表类型?甚至只是一个列表Object[]也是Json的目的。

+0

我们不知道list()和namedQuery()方法做了什么,以及它们是如何声明的。 –

+0

这是Dropwizard的API的一部分。它正在运行查询并将结果转换为列表 –

+1

嗯,此方法被声明为返回列表,但您的查询实际返回的是列表。只是不要使用这种方法。使用EntityManager的API(或Hibernat的Session API)。 –

回答

0

我最终没有被更改查询开始是这样的:

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

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