Erstellen einer Abfrage verwenden, die NICHT VORHANDEN ist in jpa criteria api
Ich habe zwei Tabellen mit Namen wie "Tabelle1", Tabelle2.Die Tabellen sind die gleichen, keine Felder.Es gibt keine Beziehung zwischen diesen beiden Tabellen.Meine Anforderung: ich möchte alle Datensätze in Tabelle1 die nicht da sind in Tabelle2. Also ich habe eine schriftliche Abfrage mittels Criteria API. Aber es gibt nicht das richtige Ergebnis. Als ich bin neu in diesem, JPA und criteria API, kann jeder ein zeigen Sie mir, wo ich falsch mache.Den folgenden code verwende ich, um dies zu tun.
CriteriaBuilder cb = mediationEntityManager.getCriteriaBuilder();
CriteriaQuery<Table1> cq = cb.createQuery(Table1.class);
Root<Table1> table1 = cq.from(Table1.class);
cq.select(table1)
Subquery<Table2> subquery = cq.subquery(Table2.class)
Root table2 = subquery.from(Table2.class)
subquery.select(table2)
cq.where(cb.not(cb.exists(subquery)))
TypedQuery<Table1> typedQuery = mediationEntityManager.createQuery(cq);
List<Table1> resultList = typedQuery.getResultList();
MySQL-Abfrage :
SELECT table1
FROM table1 table1
WHERE NOT EXISTS (SELECT table2
FROM table2 table2
WHERE table2.name = table1.name
AND table2.education = table1.education
AND table2.age = table1.age)
AND table1.name = 'san'
AND table1.age = '10';
Brauche ich die JPA criteria API-Abfrage für die oben genannten MySQL-Abfrage.
- Aber wie sind Sie, die Differenzierung der Daten zwischen diesen Tabellen, Kriterien angeben/Spalte etc
- Hi, sehr vielen Dank für die Antwort, die ich gebe, die tatsächliche mysql-Abfrage in meiner ursprünglichen Frage.Plz schauen Sie hinein und wenn möglich gib mir die jpa-criteria api-Abfragen für die gleiche mysql-Abfrage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, den folgenden code mit den Kriterien-API. Ich habe nicht versucht, aber Sie können versuchen, ändern Sie den code entsprechend.
Können, können Sie auch versuchen, unter JPQL-Abfrage, die ist leichter zu verstehen, zu verändern & debug.
createQuery()
, überflüssig zu erwähnen, Klasse. Sie können auch drop-Generika(den ich nicht bevorzuge) & kann, fügen Sie Bedingungen hinzu zu Holen, das geforderte Ergebnis, casting-Objekte erforderlich, Klasse explizit