JPA Projection с пользовательским свойством коллекции - PullRequest
0 голосов
/ 16 мая 2019

Мы используем 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 иметь Коллекции?

Но мыне могу найти примеры с подзапросом.Если JPA не позволяет, что является лучшим решением для этой проблемы?

Спасибо,

1 Ответ

1 голос
/ 16 мая 2019

Вы не разместили объекты, однако, похоже, что Profesional имеет отношение к Ауценсии. Затем вы можете использовать вложенную проекцию:

 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...