我正在使用 JPA (EclipseLink 2.5.2) 和 Jersey 2.27 在 Java 8 下的 Tomcat 8 上运行。目前我使用映射实体和一些简单列表(不同值、键值对)检索结果。我已经实现了服务器端的分页、过滤和排序。现在,我正在尝试添加动态聚合数据集的能力。
我在 SO 和其他网站上搜索了序列化从我的条件构建器查询返回的元组列表的最佳方法。到目前为止,我还没有找到任何可以回答我的问题的东西。我可以想到三种方法来做到这一点,除非从这里得到一些好的建议:
- 使用反射创建适当的对象并在我的查询中提供它
- 一次运行一个结果,并将我自己的每个元素的 JSON 写到 StringBuffer
-
ArrayList<HashMap<String, Object>>
其中使用别名和匹配结果构建 HashMap,然后将其添加到列表中,列表正常序列化
因此,如果没有“简单”的方法来序列化元组列表,那么上面哪种方法最有意义?选项 3 绝对有效,但对我来说感觉像是一个拼凑。
最佳答案
一般使用Reflection
在业务逻辑中听起来不太好,因此您应该消除第一个选项(1.
)。 ( 2.
) - 序列化 object
当你想使用流媒体时,一个接一个听起来不错 API
,在您的情况下,这不是一种选择。第三个 ( 3.
) 看起来很正常,它是一个很好的解决方案,因为它是通用的并且 List<Map<String, Object>>
非常适合 JSON
规范:
-
JSON array
-List
-
JSON object
-Map
-
property
-String
-
any JSON object
-Object
-
您应该尝试转换 EclipseLink
上的查询结果等级。参见 JPA 2.0 native query results as map问题建议将查询结果转换为 ResultType.Map
.
关于java - 将 List<javax.persistence.Tuple> 序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049584/