微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将此sql转换为jpql

如何解决如何将此sql转换为jpql

我有这种情况:

@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 column is not in resultset

原因:-

原因是您试图获取这三个字段,并试图存储在Entity中,这是错误的方法。您可以尝试以下示例,

解决方案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的名称应来自您的实体,表的名称应与Entity的名称相同,例如“ ResultAdos”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。