2012-04-10 7 views
1

再生フレームワークエンティティクエリでデータベースインデックスヒントを指定することは可能ですか?JPAエンティティ使用インデックスヒント

私のコードは次のようになります。生成されたクエリを実行

public static List<Transaction> findOnInactive(Date date) { 
    return Transaction.find(
      "date = ? and account in (select d.acctNb from account d " 
        + " where d.date = ? and (d.inactive = true or d.blocked = true)" 
        + " group by d.acctNb)", date, date).fetch(); 
} 

は20秒かかります。しかし、唯一の1秒を取る(INDEX(_dta_index_k1_1))との取引から選択

* ...

を使って手動で同じクエリを実行しています。とにかくJPAクエリでインデックスヒントを指定できましたか?

答えて

2

あなたは、ネイティブSQLクエリを使用するには、このような何かが必要です。はい

return JPA.em().createNativeQuery(
    "select * from transaction with (INDEX(_dta_index_k1_1)) ...", 
    Transaction.class).getResultList(); 
+0

を、それは私が手動で戻って私のトランザクションオブジェクトへのすべてのマッピングを行う必要がありますを意味します。私の元のクエリは非常に便利です事前にトランザクションのリストを返します。 – emt14

+0

あなたのコードを正しく見ました。私は、指定されたトランザクションクラスでこれを試してみましょう。 – emt14

+0

すばらしかったです。 – emt14

関連する問題