我正在以 JSON 格式返回 SQL 查询的结果。结果正常,但缺少键(查询中指定的列)。我是否必须将类与查询关联才能获取键名称?我不认为这是 Jackson 映射,因为当我显式使用它时(对象映射器而不是让 Spring 在 @ResponseBody 中处理它),我得到了相同的结果。
Spring 3.2.1,Hibernate 3.6。使用 Hibernate createSQLQuery 从 5 个表获取结果。
List<EvalMasterEvalDetail> details = session.createSQLQuery(query).list();
结果看起来像:
[[61,"Conference","CME Conference"],[42,"Lecture","fellow lecture"]]
应该
[[{"detail_id":61, "event_type":"Conference", "event_name":"CME Conference"}],
[{"detail_id":42, "event_type":"Lecture", "event_name":"fellow lecture"}]]
默认情况下,Hibernate 中的 SQL 查询返回标量值列表(对于select
)或列表Object[]
(对于多列)。
你遇到的是后一种情况。List<EvalMasterEvalDetail>
在这种情况下并不意味着列表包含的实例EvalMasterEvalDetail
, 因为list()
返回一个原始的List
,这样您就可以进行未经检查的转换。
如果结果的每个元组代表一个映射实体(或多个映射实体),则可以使用addEntity() and addJoin()将它们转换为实体。
如果结果的每个元组代表任意(非映射)类,您可以使用ResultTransformer
(例如AliasToBeanResultTransformer).
您还可以转换Object[]
手动定位对象(在复杂情况下很有用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)