首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Relational /Hibernate查询创建JSON对象

从Relational /Hibernate查询创建JSON对象
EN

Stack Overflow用户
提问于 2017-12-27 19:16:38
回答 1查看 83关注 0票数 1

我在Spring应用程序中使用JPA/Hibernate访问了一个关系数据库。我有很多Ajax查询,需要将关系结果转换为JSON对象。有一个简单的解决方案来将类似的东西从Relational查询转换到下面吗?

结果

代码语言:javascript
复制
[
  { id: event-..782, color: rgba(14,48,71,0.6), startTime : 2017-12-27 00:05, endTime: 2017-12-27 00:25 },
  { id: event-..801, color: rgba(249,115,0,0.6), startTime: 2017-12-27 00:30, endTime: 2017-12-27 00:45 },
  { id: event-..776, color: rgba(255,0,0,0.99), startTime: 2017-12-27 00:00, endTime: 2017-12-27 00:05 },  
  { id: event-..838, color: rgba(255,0,0,0.99), startTime: 2017-12-27 00:25, endTime: 2017-12-27 00:30 }
]

您可以看到,在本例中,Relational在日期为StartTimeEndTime (第1行对第2行)的情况下,每个对象返回2行。在这里,它必须从2行合并为2列。有很多这样的例子,在这些例子中,表格数据需要以某种方式被转换成JSON。

我看到的解决办法是

  • 在JPA方面,可以使用一些魔法将结果推送到自定义对象中,但这是非常痛苦的。有时,本机SQL黑客可能是可能的,而其他时候则不可能。在我看来,这似乎是不一致和不确定的。
  • 在返回“普通”JPA实体之后,使用javax.json或GSON等工具使用手动JSON构造,但人们告诉我,这是错误的方法。但是,即使我这样做,我也需要两个POJO:一个用于从JPA获得自定义结果(因为我不会获得“真实的”域实体),另一个用于实际的最终JSON表示。

人们如何处理这个问题?他们真的是在调整JPA/Hibernate吗?他们是否在GSON中使用手动填充,或者其他什么?

Note我们使用PostgreSQL 10作为我们的DB。

EN

回答 1

Stack Overflow用户

发布于 2017-12-27 20:07:13

您可以使用SqlResultSetMapping、映射实体或@NamedNativeQuery:以所需的格式获得结果,并将其直接映射到JSON对象,您的查询应该如下所示(取决于关系数据库管理系统):

代码语言:javascript
复制
Select distinct id_char, color, date starTime,
(Select date from table t2 where t2.id_char=t1.id_cgar and t2.id_int=2) as endTime 
From table t1 where t1.id_int=1

您还可以按原样获得结果,并在应用程序层中使用简单的POJO类将其转换为所需的格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47997496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档