JPQL Query返回没有字段名称的对象

时间:2016-09-18 13:37:29

标签: java json dropwizard

我正在使用Dropwizard和Hibernate。

我收到了这个JPQL查询:

String queryString = "select u.portalUserId, p.personName, p.personMobile, p.personEmail, u.portalUsertype, p.personNotes "
                  + "FROM Persons p, PortalUsers u WHERE p.personId = u.portalUserPersonId";

这是两个实体之间的简单连接,可以获得有关用户的一些信息。

我运行它的方式是这样的:

Query q = sessionFactory.getCurrentSession().createQuery(queryString); 
List<PortalUserBasicUserInfo> l = q.list();

PortalUserBasicUserInfo是一个包含select子句的所有字段的类。

当我运行查询时,我只获取每个字段的值但没有字段名称。例如,我收到的结果是:

"[[2,\"\",null,null,\"MANAGER\",null]]"

这不起作用,因为我想返回带有字段名称的JSON结果。如何添加字段名称,以便正在阅读json的人可以正确解析它?

1 个答案:

答案 0 :(得分:0)

我最终做的是更改为查询以返回我需要的类型:

String queryString = "select new com.myPackage.Users.PortalUserBasicUserInfo(u.portalUserId ,p.personName, p.personMobile, p.personEmail, u.portalUserStatus, u.portalUsertype, p.personNotes) "
                  + "FROM Persons p, PortalUsers u WHERE p.personId = u.portalUserPersonId";

注意new com.myPackage.Users.PortalUserBasicUserInfo。这创建了一个我预期的正确类型的列表。