Я пытаюсь выполнить собственный запрос из приложения Spring Boot, но я получаю эту ошибку "org.postgresql.util.PSQLException: ОШИБКА: оператор не существует: 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);
}
Я также заметил, удаляю ли я эту часть из запроса, ГДЕ s.subject_id IN (: subject), или говорю, что я жестко кодирую значение субъектов, как, например, s.subject_id IN (2,3,4), код выполняется успешно. Но если значение приходит из запроса, я получаю ошибку. Вот как выглядит запрос:
localhost: 8080 /valuation / f3df0bc2-7b4c-49b9-86c9-6e6b01628623 / 3/4/1? Subject = 2,3,4