3

SQL クエリの結果を JSON 形式で返しています。結果は問題ありませんが、キー (クエリで指定された列) がありません。キー名を取得するには、クラスをクエリに関連付ける必要がありますか? 明示的に使用すると(Springに@ResponseBodyで処理させる代わりにオブジェクトマッパー)、同じ結果が得られるため、Jacksonマッピングではないと思います。

春 3.2.1、休止状態 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"}]]
4

2 に答える 2

3

デフォルトでは、Hibernate の SQL クエリはスカラー値のリスト (単一の列のselect場合) またはリストObject[](複数の列の場合) を返します。

あなたは後者のケースを持っています。List<EvalMasterEvalDetail>この場合、リストに のインスタンスが含まれているという意味ではありません。未加工の を返すEvalMasterEvalDetailため、変換がチェックされていないためです。list()List

結果の各タプルがマップされたエンティティ (または複数のマップされたエンティティ) を表す場合、 と を使用addEntity()addJoin()てそれらをエンティティに変換できます。

結果の各タプルが任意の (マップされていない) クラスを表す場合は、ResultTransformer( などAliasToBeanResultTransformer) を使用できます。

Object[]また、 s をターゲット オブジェクトに手動で変換することもできます(複雑な場合に役立ちます)。

于 2013-06-18T20:53:03.040 に答える
0

リストを反復処理して JSONObject または JSONObject のリストを準備し、文字列としてクライアントに返すことができます。

于 2013-06-21T06:06:26.960 に答える