Java JPQL查询返回没有字段名的对象

Java JPQL查询返回没有字段名的对象,java,json,dropwizard,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.portalUserPers

我正在使用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();

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

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

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";

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

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

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";

请注意
新的com.myPackage.Users.PortalUserBasicUserInfo
。这创建了一个我所期望的正确类型的列表。

为什么不为列标题的JSON添加一个新条目?你的意思是什么?通过为标题添加一个条目来修改JSON。JSON是从列表的对象自动创建的。这就是为什么我需要列表本身以与选择字段相同的标题返回。看起来更像是json问题而不是hibernate问题。Hibernate已检索到您的对象,因此您的问题在于正确序列化对象。改为发布“to json”代码。为什么不为列标题的json添加一个新条目?您的意思是什么?通过为标题添加一个条目来修改json。json是从列表的对象自动创建的。这就是为什么我需要列表本身以与选择字段相同的标题返回。看起来更像是json问题而不是hibernate问题。Hibernate已检索到您的对象,因此您的问题在于正确序列化对象。改为发布“to json”代码。