Я пытаюсь выполнить собственный запрос из приложения Spring Boot, но получаю сообщение об ошибке "org.postgresql.util.PSQLException: ERROR: оператор не существует: integer = bytea"
Вот коды, которые я написал для реализации этого
@SqlResultSetMapping(
name = "StudentAssessmentValue",
classes = @ConstructorResult(
targetClass = StudentAssessmentDTO.class,
columns = {
@ColumnResult(name = "subject_title", type = String.class),
@ColumnResult(name = "assessment", type = String.class),
}
)
)
@NamedNativeQuery(
name = "getStudentSubjectsAssessment",
query = "SELECT\n" +
" subject.subject_title,\n" +
" j as assessment\n" +
"FROM assessment s\n" +
"JOIN LATERAL jsonb_array_elements(s.assessment) j(elem) ON (j.elem->>'student_id') = :student_id\n" +
"JOIN subject ON subject.id = s.subject_id\n" +
"WHERE s.subject_id IN (:subjects)\n" +
"AND s.academy_year_id = :academy_year_id\n" +
"AND s.term_id = :term_id\n" +
"AND s.section_id = :section_id"
,
resultSetMapping = "StudentAssessmentValue"
)
Это код в моем репозитории
@Query(nativeQuery = true, name = "getStudentSubjectsAssessment")
List<StudentAssessmentDTO> getStudentAssessments2(
@Param("student_id") String student_id,
@Param("academy_year_id") Integer academy_year_id,
@Param("section_id") Integer section_id,
@Param("term_id") Integer term_id,
@Param("subjects") Integer[] subjects
);
И это у меня в контроллере
@GetMapping("/{student_id}/{academy_year_id}/{section_id}/
term_id}")
public List<StudentAssessmentDTO> getStudentAssessment2(
@PathVariable("student_id") String student_id,
@PathVariable("academy_year_id") Integer academy_year_id,
@PathVariable("section_id") Integer section_id,
@PathVariable("term_id") Integer term_id,
@RequestParam(value = "subjects") Integer[] subjects
){
return assessmentService.getStudentAssessments2(student_id, academy_year_id, section_id, term_id, subjects);
}
Я также заметил, если я удалю эту часть из запроса WHERE s.subject_id IN (: themes) или скажу, что я жестко запрограммировал значение subject, например, s.subject_id IN (2,3,4), код работает успешно. Но если значение исходит из запроса, я получаю ошибку. Вот как выглядит запрос
локальный: 8080 / оценка / f3df0bc2-7b4c-49b9-86c9-6e6b01628623 / 3/4/1? субъектов = 2,3,4
@Entity
в самом верху определения класса? Просто поищите в своей кодовой базе@Entity
, чтобы узнать, какие классы у вас есть. 08.10.2019query.setParameter("subjects", subjects)
... если я правильно помню, вам не понадобится подсказка типа для коллекции. 08.10.2019