У меня проблема с подзапросом с JPQL, такая же ошибка возникает с критериями. Запрос возвращает ошибку синтаксиса:Ошибка синтаксиса подзапроса JPA
Encountered "," javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement.
JPQL
StringBuilder query = new StringBuilder("SELECT d FROM Document d WHERE NOT EXISTS (SELECT ds FROM Documents ds WHERE d = ds.key.document)");
TypedQuery<Documento> tQuery = entityManager.createQuery(query.toString());
List<Document> documents = tQuery.getResultList();
Критерии
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Document> query = cb.createQuery(Document.class);
Root<Document> root = query.from(Document.class);
CriteriaQuery<Document> select = query.select(root);
Subquery<Documents> sQuery = query.subquery(Documents.class);
Root<Documents> rootSubquery = sQuery.from(Documents.class);
Predicate p = cb.equal(rootSubquery.get("key").get("document"), root);
sQuery.select(rootSubquery);
sQuery.where(p);
select.where(cb.not(cb.exists(sQuery)));
TypedQuery<Documento> tQuery = entityManager.createQuery(query);
List<Document> documents = tQuery.getResultList();
вы пробовали с: ' StringBuilder query = new StringBuilder ("SELECT d FROM Document d WHERE NOT EXISTS (SELECT ds FROM Documents ds WHE RE d: ds.key.document) ");' Проверьте ':' вместо '=' – Dazak