Unterabfrage in die where-Klausel mit CriteriaQuery
Kann jemand mir einige Tipps, wie Sie diese Art von Unterabfrage in einer CriteriaQuery
? (Ich bin mit JPA 2.0 - Hibernate 4.x)
SELECT a, b, c FROM tableA WHERE a = (SELECT d FROM tableB WHERE tableB.id = 3)
- die zweite auswählen, wird immer wieder ein einzelnes Ergebnis oder null.
InformationsquelleAutor artaxerxe | 2013-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probieren Sie etwas wie das folgende Beispiel zum erstellen einer Unterabfrage:
Hinweis: der code wurde nicht getestet, aufgrund des Fehlens einer IDE in der Nähe.
Bearbeitet die Frage. Wenn Sie einige weitere details, Fragen Sie mich bitte. Danke.
Was erwarten Sie sich von der Abfrage zu tun im Fall einer
null
-Fall?Zurück
null
(es gibt keine null-Wert füra
Feld).Haben Sie nicht zu schreiben
Root tableB = sq.from(TableB.class)
stattRoot tableB = cq.from(TableB.class)
[Zeile 5sq
stattcq
] ?InformationsquelleAutor Menno
Können Sie
DetachedCriteria
zu repräsentieren Sie dabei die sub-Abfrage. Ihr code sollte etwa folgendermaßen Aussehen:getHibernateTemplate()
bedeuten?Ja, ist JPA comliant. getHibernateTemplate() funktioniert wie ein wrapper über die hibernate-session. Dieser kümmert sich um das öffnen/schließen der Sitzung (alle BolierPlate code) so gut, wie es ist thread-sicher. Es bietet auch Methoden von session-und query-Kriterien, wie z.B. speichern, aktualisieren, etc.
Ok. Wenn ich die PPV - Implementierung, die ich denke, dass ich nicht in der Lage zu laufen, dass code (solange es speziell für hibernate). Ich möchte kein PPV - basierte Lösung. Trotzdem, deine Lösung reagiert auf meine Bedürfnisse, ich denke, wenn Sie verlassen sich auf Hibernate. Danke.
InformationsquelleAutor Konstantin Yovkov