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.
InformationsquelleAutor aaaa | 2012-12-13
Schreibe einen Kommentar