Я использую HQL Query и пытаюсь передать объект сущности в пользовательский класс (представление), он просто выбирает мой идентификатор сущности, а затем всю сущность, делая запрос N + 1, это не так хорошо .
Стек: Spring Boot v2.2.5.RELEASE
Это ошибка Hibernate? Кто-нибудь знает способ решить эту проблему? Я пытаюсь не отображать каждый столбец объекта в моем пользовательском классе. Следуйте приведенным ниже примерам:
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
public class Book extends MyModel {
@Column(name = "title")
private String title;
@Column(name = "some_column_fetch")
private String someColumnFetch;
@ManyToOne(cascade = CascadeType.ALL)
private Author author;
}
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
public class Magazine extends MyModel {
@Column(name = "title")
private String title;
@Column(name = "some_column_fetch")
private String someColumnFetch;
@ManyToOne(cascade = CascadeType.ALL)
private Author author;
}
@Data
public class BookView {
private final Book book;
private final Magazine magazine;
}
public interface BookRepository extends JpaRepository<Book, UUID> {
@Query("SELECT new com.example.demo.views.BookView(book, magazine) " +
" FROM Book book" +
" LEFT JOIN Magazine magazine ON book.someColumnFetch = magazine.someColumnFetch")
List<BookView> findViews();
}