gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:53:16 25 4
gpt4 key购买 nike

我们正在使用 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 不允许,哪个是解决此问题的最佳解决方案?

谢谢

最佳答案

您尚未发布实体,但 Professional 似乎与 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();
}

关于java - 具有自定义集合属性的 JPA 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com