具有自定义集合属性的 JPA 投影

我们正在使用 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

我们发现了其他帖子,如:Spring JPA projections have Collections?


但是我们找不到带有子查询的例子。如果 JPA 不允许,哪个是这个问题的最佳解决方案?


神不在的星期二
浏览 85回答 1
1回答

四季花海

您尚未发布实体,但 Profesional 似乎与 Ausencia 有关系。然后您可以使用嵌套投影:&nbsp;public interface ProfesionalCensoProjection {&nbsp; &nbsp; Long getIdProfesional();&nbsp; &nbsp; String getName();&nbsp; &nbsp; String getSurname();&nbsp; &nbsp; // returns a projection which would include only the description&nbsp; &nbsp; List<AusenciaSumaryprojection> getExclusionesCenso();&nbsp;}public interface ProfesionalRepository extends JpaRepository<Profesional, Long> {&nbsp; &nbsp; List<ProfesionalCensoProjection> findCenso();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java