gpt4 book ai didi

json - Spring @ResponseBody 返回 JSON,但缺少键

转载 作者:行者123 更新时间:2023-12-02 00:08:02 27 4
gpt4 key购买 nike

我正在以 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[] s 手动定位对象(在复杂情况下很有用)。

关于json - Spring @ResponseBody 返回 JSON,但缺少键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com