当前位置: 首页 > 知识库问答 >
问题:

psqlException:错误:操作符不存在:integer=bytea

钮安歌
2023-03-14
  @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);
   }

我还注意到,如果我从(:subjects)中的s.subject_id的查询中删除这一部分,或者说我像(2,3,4)中的s.subject_id那样硬编码subjects值,代码将成功运行。但是,如果值来自请求,我就会得到错误。下面是请求的样子

本地主机:8080/评估/F3DF0BC2-7B4C-49B9-86C9-6E6B01628623/3/4/1?主题=2,3,4

共有1个答案

从建明
2023-03-14

我最近在使用Postgres上的本地JPA查询时遇到了与您类似的问题。以下是对我有效的方法:

// sqlString contains your native query

Query query = entityManager.createNativeQuery(sqlString, StudentAssessmentDTO.class);
query.setParameter("subjects", subjects);
query.setParameter("academy_year_id", new TypedParameterValue(IntegerType.INSTANCE, academy_year_id));
query.setParameter("term_id", new TypedParameterValue(IntegerType.INSTANCE, term_id));
query.setParameter("section_id", new TypedParameterValue(IntegerType.INSTANCE, section_id));
List< StudentAssessmentDTO > = query.getResultList();

您所看到的错误可以由Postgres JDBC驱动程序无法正确地将所需的类型信息传递到数据库来解释。例如,以下错误:

错误:运算符不存在:integer=bytea

 类似资料:
  • 使用Spring和Hibernate,我使用@query注释创建了一个查询,如下所示: 这是示例类: 当我从客户端调用:“url/getSamplesXAnalysis”时,它将执行: 并且没有给出错误或异常,我收到结果。但是,如果我试图在URL上使用参数,例如:“URL/getSamplesXAnalysis/2”,它将执行: 编辑2从长变长的参数方法: 返回IlelGalStateExcept

  • 问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL

  • 我使用PostgreSQL 10、Spring Boot 2.2.7.Release和pgAdmin 4来实现Postgres GUI 我有以下实体类: 我已经使用GUI PGADMIN4为ID列“TB03_TABLE_A_SEQ”创建了表“TB03_TABLE_A”和序列 我哪里出问题了?请救命! 提前感谢!

  • 执行简单查询时出现操作符不匹配错误。这是什么原因造成的? 表定义:

  • 我在heroku上创建了java(Spring)应用程序,并将postgreql连接到它。当我在应用程序上发出请求时,日志显示 WARN 4-[io-14883-exec-3]o . h . engine . JDBC . SPI . sqlexception helper:SQL错误:0,SQLState:42p 01 app[web.1]:2016-12-11 12:13:09.942错误4-

  • 我正在开发一个广泛部署的java web服务。它连接到postgresql数据库。在这个数据库中,我有一个名为xx_activity的表。其中有一个名为“id”的列,它也是主键。下面是用于创建表的查询: 为了连接到这个表,我使用以下java代码: 但是,当我调用包含此代码的方法时,我得到一个错误: psqlException:错误:列“id”不存在 这怎么能修好呢?