4

Hibernate ネイティブ メソッドでストアド プロシージャを実行しています。このストアド プロシージャは、別のテーブル ID に応じて列名を作成します。したがって、その列は次のようになります。

| | ID | ... いくつかの他の列 ... | 名前 | c_1 | c_2 | c_4 | c_.. |

呼び出すQuery.getResultList() と が返さList<Object[]>れ、列名がわかりません。さらにビジネス ロジックを続行するには、列名 (および対応する列インデックス) を知る必要があります。EntityManager.createNativeQuery(String s, Class aClass)私もPOJOクラスではないので使えません。

現在List<Object[]>、問題なく取得できていますが、たとえば、Map<String,Object[]> 列名をキーとして、列の値をオブジェクトの配列として必要です。

すべての列名とその値を取得するにはどうすればよいですか?

4

2 に答える 2

1

最後に、解決策を見つけたので、あなたと共有します(誰かを助けるかもしれません)。これが私がしたことです:

于 2012-09-29T09:13:34.347 に答える
0

(これは単なるアイデアです。テストしていません。Criteria API が必要です。)

結果を として取得できた場合List<javax.persistence.Tuple>は、1 つを取得してそれをTuple呼び出すことができます。呼び出すことができる のgetElements()リストが得られます。おそらくこれが列名になります。しかし、タプル (結果) が返されない場合は 100% 確実ではありませんが、試してみる価値はあると思います。9.2を参照してください。タプル基準クエリTupleElement<?>getAlias()

このアプローチでは、これが役立つ場合があります。

于 2012-09-28T19:49:51.557 に答える