我在Spring Web應用程序中使用JPA/Hibernate訪問關係數據庫。我有很多Ajax查詢需要將關係結果轉換爲JSON對象。是否有一個簡單的解決方案將這樣的內容從關係JPA查詢轉換爲下面的內容?從關係數據庫JPA/Hibernate查詢中創建JSON對象
結果
[
{ 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 }
]
你可以看到,在這個例子中,關係數據庫回來了每個對象的2行,其中的日期或者是StartTime
或EndTime
(行1對2) 。這裏它必須合併爲2行的2列。有很多像這樣的例子,其中表格數據需要以某種方式按到JSON中。
我看到的解決方案是
- 在JPA方面,做了一些神奇的按摩/項目成果轉化爲定製 對象,但是這是非常痛苦的。有時候可能會出現原生SQL破解,有時候可能不會。這對我來說似乎不一致和不確定。
- 在獲得「普通」JPA實體後,使用手動JSON構建工具(如javax.json或GSON),但是人們告訴我這是錯誤的方法。但即使我走這條路,我需要2個POJO:一個用於從JPA獲取自定義結果(因爲我不會獲得'真實'域實體),另一個用於實際的最終JSON表示。
人們如何處理這個問題?他們真的調整JPA /休眠,他們使用手動人口與GSON,還是別的?
注意我們使用PostgreSQL 10作爲我們的數據庫。
目前尚不清楚具體問題。這是什麼意思,數據庫回來2結果?顯示代碼。無論如何,使用正確的工具來達到它設計的目的:JPA用於表示db對象並查詢它們,json庫用於將對象轉換爲json表示形式。順便說一句,你爲什麼不使用整數來表示rgba顏色? – perissf
在這種情況下,每個對象信息條目有2行。第1行是StartTime(日期值),第2行是EndTime(日期值)。 –
你的標籤說你正在使用Spring。 Spring MVC使用Jackson自動生成JSON:https://spring.io/guides/gs/rest-service/ –