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

Spring启动 未找到能够从类型转换的转换器

奚正谊
2023-03-14

我必须运行一个本机查询来检索要插入到声明它的Jpa存储库以外的模型中的数据,当我执行函数loadValoriPreventivoUnica时,我有以下错误。我该如何解决这个问题?这是由于什么原因?

错误:

Errore: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type 

[org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap]键入[com.reportserver.report.model.TableReportCapitoloPreventivo]

Java代码:

public interface SottoCapitoloRepository extends JpaRepository<SottoCapitolo, Integer> {
    //Permette il caricamento dei sotto capitolo
    @Query("FROM SottoCapitolo where IdCapitolo=:IdCapitolo")
    List<SottoCapitolo> load(@Param("IdCapitolo") int IdCapitolo);

    //Caricamento valori stampa sotto capitoli report unica percentuale
    @Query(nativeQuery = true, value = "DECLARE @T AS table( Descrizione varchar(5000), NumeroCapitolo varchar(100), SottoCapitolo1 varchar(5000), SottoCapitolo2 varchar(5000), SottoCapitolo3 varchar(5000), Totale money, DescrizioneEstesa varchar(5000), Images Image, CostoUnitario money, Quantita money, DescrizioneDis varchar(5000),Tipologia varchar(300),PrezzoRiservato money,UM varchar(50)); INSERT INTO @T SELECT Capitolo.Descrizione, Capitolo.NumeroCapitolo,SottoCapitolo.SottoCapitolo1,SottoCapitolo.SottoCapitolo2,SottoCapitolo.SottoCapitolo3, (ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2)) * SottoCapitolo.Quantita as Totale ,SottoCapitolo.DescrizioneEstesa, SottoCapitolo.Images, ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2) as CostoUnitario,SottoCapitolo.Quantita  , CASE when Tipologia='Prezzo' then SottoCapitolo.Descrizione else ''+SottoCapitolo.Codice+ '     ' +SottoCapitolo.Descrizione end as DescrizioneDis,Capitolo.Tipologia,Capitolo.PrezzoRiservato,SottoCapitolo.UnitaMisura as UM FROM Capitolo INNER JOIN SottoCapitolo ON SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo  INNER JOIN Preventivo ON Preventivo.IdPreventivo = Capitolo.IdPreventivo  where Preventivo.IdPreventivo =:IdPreventivo ;SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY a.Descrizione ORDER BY a.Descrizione) = 1 THEN a.Descrizione ELSE '' END AS Descrizione, Descrizione as Desc2,a.NumeroCapitolo, a.SottoCapitolo1, a.SottoCapitolo2, a.SottoCapitolo3, a.DescrizioneDis, a.CostoUnitario, a.Quantita, a.Totale AS TotaleCap, a.DescrizioneEstesa, a.Images,a.Tipologia,a.PrezzoRiservato,a.UM FROM(SELECT 1 AS d, ROW_NUMBER() OVER(PARTITION BY Descrizione ORDER BY Descrizione) AS r, Descrizione, NumeroCapitolo, SottoCapitolo1, SottoCapitolo2, SottoCapitolo3, Totale, DescrizioneDis, Images, CostoUnitario, Quantita, DescrizioneEstesa,Tipologia,PrezzoRiservato,UM FROM @T  UNION ALL SELECT 2, 0, Descrizione, NumeroCapitolo, '', '', '', SUM(Totale), '', '', '', '','',Tipologia,PrezzoRiservato,'' FROM @T GROUP BY Descrizione,Tipologia,PrezzoRiservato,NumeroCapitolo) AS a ORDER BY a.Descrizione, a.d ")
    List<TableReportCapitoloPreventivo> loadValoriPreventivoUnicaPercentuale(@Param("IdPreventivo") int IdPreventivo);
}


public class TableReportCapitoloPreventivo implements Serializable {
    public String Descrizione;
    public String Desc2;
    public Integer NumeroCapitolo;
    public String SottoCapitolo1;
    public String SottoCapitolo2;
    public String SottoCapitolo3;
    public String DescrizioneDis;
    public Double CostoUnitario;
    public Double Quantita;
    public Double TotaleCap;
    public String DescrizioneEstesa;
    public String Tipologia;
    public String UM;
    public double PrezzoRiservato;
    public byte[] Imgaes;

    public TableReportCapitoloPreventivo(String Descrizione, String Desc2, int NumeroCapitolo, String SottoCapitolo1, String SottoCapitolo2, String SottoCapitolo3, String DescrizioneDis, double CostoUnitario, double Quantita, double TotaleCap, String DescrizioneEstesa, String tipologia, String UM, double PrezzoRiservato, byte[] Images, String Tipologia) {
        this.Descrizione = Descrizione;
        this.Desc2 = Desc2;
        this.NumeroCapitolo = NumeroCapitolo;
        this.SottoCapitolo1 = SottoCapitolo1;
        this.SottoCapitolo2 = SottoCapitolo2;
        this.SottoCapitolo3 = SottoCapitolo3;
        this.DescrizioneDis = DescrizioneDis;
        this.CostoUnitario = CostoUnitario;
        this.Quantita = Quantita;
        this.TotaleCap = TotaleCap;
        this.DescrizioneEstesa = DescrizioneEstesa;
        this.Tipologia = Tipologia;
        this.UM = UM;
        this.PrezzoRiservato = PrezzoRiservato;
        this.Imgaes = Images;

    }
}

共有1个答案

郗学
2023-03-14

您有 2 种选择

> < li>

使< code > tablereportcapitolopreventivo . class 成为为每个字段公开getter方法的接口。不幸的是,当返回的对象由一个类表示时,JPA不能自动使用这个转换器。

使用@NamedNativeQuery@SqlResultSetMap到您的实体类SottoCapitolo.class来定义返回结果应该如何映射到TableReportCapitoloPreventivo.class。如果你遵循这条路,那么前面的SO答案也可以指导你如何做。

请查看此处的另一个类似教程。

 类似资料:
  • 我有这门课: 这个问题: 但我有这个错误

  • 我将spring与JPA一起使用,并尝试使用@query与SQL query一起执行查询,并尝试将结果映射到一个对象。我有不同的实体类和映射到其他dto,因为我不想要所有的列。获取以下错误 如何解决上述问题。 如果问题无法解决,那么我们可以使用spring data JPA在不使用@Query的情况下解决问题吗?怎么做? 使用JPQL::编辑:: 获取以下错误

  • 我正在使用Spring Boot开发一个应用程序,在这里我实现了身份验证和授权。这是我的角色实体 Rold id在BaseModel中。我想从数据库中获取所有角色,为此我在RoleRepository中编写了一个方法,如下所示 但这又让我犯了这个错误 org . spring framework . core . convert . converternotfoundexception:未找到能够

  • 我们有一个使用带有Postgres数据库的Spring boot1.3运行的应用程序。自定义用户类型是为数据库中的Json类型定义的。遵循并实现UserType以使用ObjectMapper返回Pojo。它工作得非常好。但是现在使用Spring boot1.4,我们得到了这个异常。 自定义用户类型中的代码片段。 我可以看到,找到了来自数据库的响应,objectmapper也对其进行了转换。返回时抛

  • 我知道这是另一个类似的问题,但我自己无法回答,这就是我写信给你寻求帮助的原因。 我尝试创建自己的@Query,并在两种情况下返回一个转换错误。我的猜测是服务有问题,但这是我的知识结束。 下面是我的代码: > 主实体 2.第二种模式 3.第三种模式 存储库 @Repository public interface UserRepository extends jparepository { } 服务