Wie verwenden Sie eine vorbereitete Anweisung in JPA
Ich bin ein play-framework-Anwendung Entwickler.Ich bin mit createNativeQuery Methode in JPA. In diesem Beispiel möchte ich verwenden Sie eine vorbereitete Anweisung. Bitte jemand mir helfen?
Hier ist der code ohne PPV. Ich brauche Hilfe um Sie zu konvertieren, um eine Vorbereitete Anweisung.
Query query = JPA.em().createNativeQuery("select count(*) from truck t inner join" +
"box b where t.truck_id=b.truck_id and t.shipment_upc='" + code + "'");
BigInteger val = (BigInteger)query.getSingleResult();
System.out.println(val);
Verwenden Sie einen parameter
danke für Eure Antworten. Ich bin ein Anfänger . können Sie mir sagen, im detail.. Danke im Voraus.
Die Antwort von Subir Punkte es heraus 🙂
danke danke so viel
t.shipment_upc= :upc
-> setParameter("upc", code)
danke für Eure Antworten. Ich bin ein Anfänger . können Sie mir sagen, im detail.. Danke im Voraus.
Die Antwort von Subir Punkte es heraus 🙂
danke danke so viel
InformationsquelleAutor user3454863 | 2014-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hey @SubirKumarSao, Parameter mithilfe von tags wie ":xxx" funktioniert nicht auf "createNativeQuery" nur "createQuery", zumindest bei meinem setup mit EclipseLink, sind Sie sicher, dass Sie den obigen code ausführen? Wenn ja, können Sie mir bitte sagen, welche version der Dinge, die verwenden Sie? thx für die Zusammenarbeit.
Seine arbeiten perfekt für select und update. Ich würde gerne wissen, wie zu tun die selben für einfügen
Sie Recht zu beobachten, dass dies unmöglich ist in EclipseLink (zumindest so, wie der 2.5.1). Siehe meine Antwort für eine Lösung kompatibel mit EclipseLink — Einbeziehung-positional-Parameter.
nicht wirklich hilfreich für mehrere Einsätze
InformationsquelleAutor Subir Kumar Sao
Kurze Zusammenfassung
Müssen Sie verwenden den Abfrage-Parameter hier, aber da Sie eine native Abfrage, Sie können begrenzt Ihre Möglichkeiten im Vergleich mit JPQL.
Zustand der Welt
Möglicherweise werden Sie beschränkt auf die positional-Parameter:
Hibernate-Implementierung von JPA unterstützt benannte Parameter:
Lösung
Hibernate
Subir Kumar Sao Antwort zeigt, wie man dieses Problem lösen benannte Parameter verwenden. Dies ist möglich, zumindest im Ruhezustand.
Ich wiederhole es hier für den sake des Vergleichs:
Generische JPA (einschließlich EclipseLink)
Fand ich, dass mit EclipseLink (2.5.1), benannte Parameter, die nicht unterstützt wurden.
Statt, es notwendig wird, verwenden Sie Parameter. Diese können auf zweierlei Weise ausgedrückt werden — explizit und implizit.
Explizite index
Markieren Sie den parameter mit
?1
(oder irgendeine andere Zahl). Dieser index kann verwendet werden, um eindeutig zu identifizieren, dass bestimmte parameter in Ihrer Abfrage.Implizite index -
Markieren Sie den parameter mit nur
?
. Der index wird auf der Grundlage der Sequenz alle Parameter, die teilnehmenden in Ihre Abfrage-string.Notes
Beachten Sie, dass:
Query
- parameter der Karte ist einfach der index, der die positionellen parameter.Zusätzliche Quellen
InformationsquelleAutor Birchlabs