2011-01-14 4 views
3

Hibernateでなく、与えられた順序で指定された順序で与えられたIDでオブジェクトのセットを選択する最良の方法は何ですか、何かのように:は、私は与えられたIDを持つオブジェクトの数を選択したい/ JPA

<named-query name="getQuestionsByIds"> 
    <query><![CDATA[from Question q where q.id in (:ids)]]></query> 
</named-query> 

しかし、パラメータのIDと同じ方法で並べ替えられます。

など。 mysqlでは次のようにすることができます:

SELECT * FROM table ORDER BY FIELD(id, 23, 234, 543, 23) 

どのような方法が最適ですか?

答えて

4

Hibernateは知らない関数を保持し、それらが書かれたときにSQLに渡すので、あなたがMySQLを使用していると仮定すると、 'ORDER BY FIELD'節を持つHQLを書こうとしましたか?以下のような何か...

+0

申し訳ありませんが、返信しないために、やるべきことがたくさんありました。ちょうどそれをテストし、それは動作します。ありがとうございました!最終的なバージョンは次の通りです:質問qからqを選びます。q.idは(:ids)ORDER BY FIELD(id、:ids) です。 –

+0

編集していただきありがとうございます。 – BrunoJCM

+0

ほんのちょっとしたヒント..リストのIDが空であり、この場合にクエリを実行しないかどうかをチェックすると、hibernateは無効なクエリを生成し、構文例外を生成します。 – BrunoJCM

1

は、いくつかの更新読むには、と私は同じ問題ではなくpostgresの使用に関連し、このトピックread this answerについて、情報を便利願っています。いくつかのデータベースに依存しないソリューションもあります。

関連する問題