Mit IN-Klausel in eine native sql-Abfrage
Wir versuchen, dynamisch zu generieren, eine IN-Klausel für eine native sql-Abfrage um eine JPA-Entität. Hibernate ist unsere JPA-provider. Unser code sieht ungefähr so aus.
@NamedQuery(
name="fooQuery",
queryString="select f from Foo f where f.status in (?1)"
)
....
Query q = entityManager.createNamedQuery("fooQuery");
q.setParameter(1, "('NEW','OLD')");
return q.getResultList();
Dies nicht funktioniert, die in der Klausel nicht erkennen, wie beliebige Werte übergeben, die über diese Weise. Kennt jemand eine Lösung zu diesem problem?
InformationsquelleAutor | 2009-05-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
JPA unterstützt benannte Liste von Parametern, in Ihrem Fall:
JPA generiert eine SQL-query mit den IN Ziffer parametrisierte von Java-Liste, wodurch SQL-Abfrage enthält native (SQL) - Klausel.
InformationsquelleAutor topchef
Ich würde empfehlen nicht, verwenden Sie eine composite-parameter für die Abfrage ein, aber teilen Sie es individuell. Nicht angeben
('NEW','OLD')
; getrennte Parameter'NEW'
und'OLD'
. Das kann helfen.Dies ist natürlich, kann zu Problemen führen, wenn die parameter-Längen sind nicht definiert.
InformationsquelleAutor Paul Sonier