Я бы хотел создать запрос в JPA с помощью Criteria API. Структура моего проекта более сложная, но мне не нужно представлять все, поэтому я упростил ее.
У меня есть объект Author с полями:
String name;
List <Book> books;
И сущность Book с полями:
String title;
Author author;
Я хочу сделать что-то подобное с JPA: SELECT a. , b. ОТ авторов ПРИСОЕДИНЯЙТСЯ к книгам b ON a.book_id = b .id WHERE b.title = '123';
В этом случае я должен получить автора с одной книгой. Я создаю следующий запрос:
CriteriaBuilder builder = entityManager.getCriteriaBuilder ();
CriteriaQuery <Author> criteria = builder.createQuery (Author.class);
Root <Author> authorRoot = criteria.from (Author.class);
ListJoin <root, Book> bookJoin = root.join (Author_.books);
TypedQuery <Author> typedQuery = entityManager.createQuery (
criteria
.Select (authorRoot)
.where (builder.equal (bookJoin.get (Book_title), "123"));
Я хочу, чтобы запрос возвращал автора с одной книгой, а не автора со всеми книгами (если у него есть одна "123").
Кто-нибудь знает, как это решить? Замена root для книг не вариант. Я должен использовать JPA.