我们正在使用Spring Data并尝试创建带有子查询的自定义查询,结果投影具有数组和其他属性,我们的问题出在子查询数组上。
public interface ProfesionalRepository extends JpaRepository<Profesional, Long> {
@Query("SELECT p.id as idProfesional, " +
" p.name as name, " +
" p.surname as surname, " +
" (SELECT a.descripcionIlt FROM Ausencia a WHERE a.profesional.id = p.id) as exclusionesCenso " +
" FROM Profesional p ")
List<ProfesionalCensoProjection> findCenso();
}
投影为:
public interface ProfesionalCensoProjection {
Long getIdProfesional();
String getName();
String getSurname();
List<String> getExclusionesCenso();
}
我们收到这样的错误:
Caused by: java.sql.SQLException: ORA-01427: single-row subquery
returns more than one row
我们发现了其他帖子,例如:Can Spring JPA projections have Collections?
但是我们找不到带有子查询的示例。 如果JPA不允许,哪个是解决此问题的最佳解决方案?
谢谢
答案 0 :(得分:1)
您尚未发布实体,但是Profesional似乎与Ausencia有关系。然后,您可以使用嵌套投影:
public interface ProfesionalCensoProjection {
Long getIdProfesional();
String getName();
String getSurname();
// returns a projection which would include only the description
List<AusenciaSumaryprojection> getExclusionesCenso();
}
public interface ProfesionalRepository extends JpaRepository<Profesional, Long> {
List<ProfesionalCensoProjection> findCenso();
}