私はSpring WebアプリケーションでJPA/HibernateでリレーショナルDBにアクセスしています。私は、リレーショナル結果をJSONオブジェクトに変換する必要がある多くのAjaxクエリーを持っています。リレーショナルJPA問合せから、これまで以下のように変換する簡単なソリューションがありますか?リレーショナルDBからのJSONオブジェクトの作成JPA/Hibernateクエリ
あなたは日がStartTime
かEndTime
(行1対2)のいずれかです。この例では、リレーショナルDBは、オブジェクトごとに2列に戻ってくることがわかります結果
[
{ 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行から2列に結合する必要がありました。このような例がたくさんありますが、表形式のデータを何らかの形でJSONにマッサージする必要があります。私が見
ソリューションはカスタム オブジェクトにマッサージ/プロジェクトの結果にいくつかの魔法を行い、JPA側で
- ているが、これは非常に痛いです。ネイティブSQLのハックが可能である場合もあれば、そうでない場合もあります。これは一貫性がなく不確かなようです。
- 「プレーン」JPAエンティティを取得した後に、javax.jsonやGSONなどのツールで手動のJSON構築を使用しますが、これは間違ったアプローチです。しかし、私がこのルートを行っても、JPAからのカスタム結果を得るためのPOJO(実際のドメインエンティティを取得しないため)と、実際の最終的なJSON表現のためのPOJOが2つ必要です。
この問題はどのように処理されますか?彼らは本当にJPA/Hibernateを微調整していますか、彼らはGSONを使ってマニュアルを作っていますか?
注私たちはDBとしてPostgreSQL 10を使用しています。
具体的な問題は明確ではありません。 dbが2つの結果を返すとはどういう意味ですか?コードを表示します。とにかく、dbオブジェクトを表現したり問い合わせたりするためのJPA、オブジェクトをjson表現に変換するためのjsonライブラリ。ところで、なぜあなたはrgbaの色を表現するために整数を使わないのですか? – perissf
この場合、オブジェクト情報ごとに2行あります。行1はStartTime(Date val)、Row 2はEndTime(Date val)です。 –
あなたのタグはあなたがSpringを使用していると言います。 Spring MVCはJacksonを使用してJSONを自動生成します:https://spring.io/guides/gs/rest-service/ –