2012-04-10 6 views
1

Ist es möglich, einen Datenbankindexhinweis für eine Entitätsabfrage des Spielframeworks anzugeben.JPA-Entität verwenden Indexhinweis

Mein Code sieht so aus:

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(); 
} 

Ausführen des generierten Abfrage 20 Sekunden dauert. Allerdings läuft die gleiche Abfrage manuell mit

select * from Transaktion mit (INDEX (_dta_index_k1_1)) ...

nur 1 Sekunde dauern. Wie auch immer, ich könnte den Index-Hinweis in meiner JPA-Abfrage angeben?

Antwort

2

Sie benötigen nativen SQL-Abfrage verwenden, etwa so:

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

Ja, aber das würde bedeuten, ich brauche alle um die Zuordnung zu tun, um wieder manuell zu meinem Transaktionsobjekt. Meine ursprüngliche Abfrage gibt die Liste der zuvor ausgefüllten Transaktion zurück, was ziemlich praktisch ist. – emt14

+0

Ich habe mir deinen Code genau angesehen. Lassen Sie mich das mit der angegebenen Transaktionsklasse versuchen. – emt14

+0

Brilliant, funktioniert ein Genuss! – emt14

Verwandte Themen