【问题标题】:How to transform this sql into jpql如何将此sql转换为jpql
【发布时间】:2021-01-22 21:02:18
【问题描述】:

我有这种情况:

@Query(value="select distinct mensal, anual, porcentagem from resultados where id_empresa = :id_empresa and tipo_tarifa= :tipo_tarifa", nativeQuery=true)
List<Resultados> listarResultadosPorTarifa(@Param("id_empresa") Integer id_empresa, @Param("tipo_tarifa") String tipo_tarifa);

当我运行我的应用程序时,我收到了这个错误:

id 列不在结果集中

我该如何解决?

【问题讨论】:

  • 您是否尝试将 id 列添加到结果集中?
  • 当我添加它时,我无法得到我需要的结果。
  • 可以分享Resultados类吗?

标签: java spring spring-boot jpa spring-data-jpa


【解决方案1】:

您遇到的问题:-

当我运行我的应用程序时,我收到了这个错误:

id column is not in resultset

原因:-

原因是您试图获取 [mensal, anual, porcentagem] 这三个字段并试图存储在一个错误的实体中。你可以试试下面的例子,

解决方案 A:

现在请考虑以下类作为您的实体:

ResultAdos.java

@Entity
class ResultAdos{
    Integer empresaId;
    String mensal;
    String anual;
    String porcentAgem;
    String tipoTarifa;

    //getter
    //setter

}

ResultRepository.java

@Query(value="select * from resultados where id_empresa = :id_empresa and tipo_tarifa= :tipo_tarifa", nativeQuery=true)
List<Resultados> listarResultadosPorTarifa(@Param("id_empresa") Integer id_empresa, @Param("tipo_tarifa") String tipo_tarifa);
  • 以上查询将完美运行

  • 如果您不想更改查询,则可以使用以下示例,

解决方案 B:-

  • 创建另一个具有合适名称 ResultDto 的普通类:

ResultDto.java

class ResultDto{
    String mensal;
    String anual;
    String porcentAgem;

    //getter
    //setter

}

ResultRepository.java

@Query(value="select distinct mensal, anual, porcentagem from resultados where id_empresa = :id_empresa AND tipo_tarifa= :tipo_tarifa", nativeQuery=true)
List<ResultDto> listarResultadosPorTarifa(@Param("id_empresa") Integer id_empresa, @Param("tipo_tarifa") String tipo_tarifa);

-- 在 JPQL 中,fields/columnName 的名称应该来自您的实体,并且 table 的名称应该与 Entity 的名称相同,例如“ResultAdos”。

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 2021-10-09
    • 2014-08-02
    • 2018-03-16
    • 2014-03-08
    • 2018-10-29
    • 1970-01-01
    • 2016-07-06
    • 2016-01-16
    相关资源
    最近更新 更多