簡體   English   中英

如何把這個sql轉成jpql

[英]How to transform this sql into 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

原因:-

原因是您試圖獲取 [mensal, anual, porcentagem] 這三個字段並試圖存儲在一個實體中,這是錯誤的方法。 您可以嘗試以下示例,

解決方案一:

截至目前,請將以下 class 視為您的實體:

結果 Ados.java

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

    //getter
    //setter

}

結果庫.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 創建另一個正常的 class:

結果Dto.java

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

    //getter
    //setter

}

結果庫.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 中,字段名/列名應來自您的實體,表名應與實體名稱相同,如“ResultAdos”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM