未能>;从类型[java.lang.Object[]转换为类型>;[com.rh.app.batch.domain.A]java
我试图从表B中获取数据,并将其保存到类对象A中未能>;从类型[java.lang.Object[]转换为类型>;[com.rh.app.batch.domain.A]java,java,spring,jpa,spring-boot,Java,Spring,Jpa,Spring Boot,我试图从表B中获取数据,并将其保存到类对象A中 A sale = repository.getSale(m, stmtDate); 存储库 public interface repository extends JpaRepository<B, String> { @Query(value = " SELECT ID AS id FROM B...LEFT JOIN C ... ", nativeQuery = true) A getSale(@Param("m") St
A sale = repository.getSale(m, stmtDate);
存储库
public interface repository extends JpaRepository<B, String> {
@Query(value = " SELECT ID AS id FROM B...LEFT JOIN C ... ", nativeQuery = true)
A getSale(@Param("m") String m, @Param("date") String stmtDate);
}
错误
org.springframework.core.convert.ConversionFailedException:未能
从类型[java.lang.Object[]转换为类型
[com.rh.app.batch.domain.A]获取值
“{0e89c64c-d840-45c5-9c6a-bda52fbaa7d1,201802,5.000,1,0,0}”;
嵌套异常是
org.springframework.core.convert.ConverterNotFoundException:否
发现转换器能够从类型[java.lang.String]转换为
键入[com.rh.app.batch.domain.A]
存储库接口方法返回
A.class
type对象,其中作为查询返回String(id)
尝试将查询更改为
SELECT*FROM.
或者更改方法签名,如
字符串getMerchantsAllexn(…
编辑
要从一个表存储另一个表中的数据,必须执行以下操作
B b = bRepository.findByMyId(myId);
A a = b.getA(); //some method that converts B to A
aRepository.save(a);
还原法
@Query("select * from b where myId=:myId")
B findByMyId(myId);
我不确定这是否是您正在寻找的,但是,当您想要将复杂查询的结果映射到一个对象时,可以使用注释: 假设你有一门像这样的课
public class PersonDTO {
private String name;
private Date birthDate;
//omit other attributes
public Person(String name, Date birthDate) {
this.name = name;
this.birthDate = birthDate;
}
你按如下方式装饰它
@SqlResultSetMapping(name="PersonDTOMapping",
classes="@ConstructorResult(
targetClass= PersonDTO.class,
columns = {@ColumnResult(name="name"),
@ColumnResult(name="birhDate")}))
您的查询变成:
PersonDTO person = (PersonDTO) em.createNativeQuery("select p.name, p.birthDate as date from person where p.id=1", "PersonDTOMapping").getSingleResult();
请让我知道,如果这是您正在寻找的。在我的情况下,通过添加默认构造函数解决了问题。 例如:
public Person() {
}
存储库将只映射同一存储库中的对象。如果类不匹配,则会出现该错误 你有jpa积极的
public interface repository extends JpaRepository<B, String> {
@Query(value = " SELECT ID AS id FROM B...LEFT JOIN C ... ", nativeQuery = true)
A getSale(@Param("m") String m, @Param("date") String stmtDate);
}
这是对象类型B的存储库
但是您正在转换为类型对象A。在存储库中执行此操作,它将起作用(假设您有正确的列).但存储库将从others表返回others数据。所有数据都将存储到类对象A中。但这将使用不同的方法。您的方法签名与查询结果不匹配是类A实体还是简单的POJO/DTO?您的存储库方法返回类型仍然与查询返回类型不匹配。另外演示如何将记录从一个表保存到另一个表的编辑答案other@EiriniGraonidou是
@实体