我必须运行一个本机查询来检索要插入到声明它的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;
}
}
您有 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 { } 服务