Я использую проекции JPA, но не получается, когда мой запрос содержит подзапрос. Например:
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "student_id")
private Long id;
private String name;
}
Вот интерфейс для проекции:
public interface StudentProjection {
Integer getId();
}
И репозиторий:
@Query("select s from Student s where s.id = 88831")
List<StudentProjection> findProjections();
С этим кодом все работает нормально, и репо возвращается список EleveProjection.
Но если я изменю запрос на этот (например, выборку идентификатора по подвыборке - просто для примера):
@Query("select s from Student s where s.id = (select max(88831) from Student)")
List<StudentProjection> findProjections();
... method findProjection () возвращает список org.springframework.data.jpa.repository.query.AbstractJpaQuery $ TupleConverter $ TupleBackedMap
И, очевидно, невозможно выполнить getId ( ) на этом объекте (исключение выдается).
Это похоже на ошибку в данных Spring JPA. В настоящее время я использую версию 2.2.4.RELEASE.
Есть идеи, как использовать подзапросы с проекциями JPA?
Спасибо