пытаюсь объединить две не связанные между собой сущности Студент, Книги. Студент может иметь список. Мне нужно объединить эти две сущности и выполнить поиск по полю Book.name с помощью CriteriaBuilder.
Что я пробовал: Я создал третью сущность StudentView
@Entity
@Table("Student")
class StudentView
{
@Id
String id;
@Embedded
@JsonUnwrapped
private StudentEmbedded studentEmbedded;
@oneToMany(cascadetype=all, mappedBy="bookId")
private List<Books> books = new ArrayList<>();
StudentView(Student student, Book book)
{
this.id=student.getId;
this.studentEmbedded = student.getStudentEmbedded;
this.books.add(book);
}
}
@Entity
@Table("Student")
class Student
{
@Id
String id;
@Embedded
StudentEmbedded studentEmbedded;
}
@Entity
@Table("Books")
class Book
{
@Id
String id;
@Column(Book_Id)
String bookId;
String bookName;
}
Я создал ListJoin с JoinType.LEFT для StudentView и Book Root<StudentView> studentRoot = something
ListJoin<StudentView, Book> join = studentRoot.joinList("books", JoinType.LEFT);
join.on(provided predicate-works fine till this point)
.where(criteriabuilder.like(join.get("bookName"), "Hibernate")
только в том случае, когда условие создает проблему. Я не могу выполнить поиск по Book.bookName с указанным выше кодом. Пожалуйста, ввод будет оценен