我有两个名为 table1 ,table2 的表。两个表的字段数相同。这两个表之间没有关系。我的要求是我想要 table1 中的所有记录,而 table2 中没有。所以我使用 Criteria API 编写了一个查询。但它没有给出正确的结果。由于我是这个 JPA 和标准 API 的新手,任何人都可以指出我做错了什么。下面的代码是我用来执行此操作的。
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 查询:
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';
我需要上述 MySQL 查询的 JPA 标准 API 查询。