在从DB表检索记录时,我们得到了异常。我在另一张桌子上也做了同样的尝试,它起作用了,但在这张桌子上,它不起作用了。我使用的是spring数据jpa
@Entity
@Table(name=USR.TABLE_NAME)
public class USR implements Serializable {
private static final long serialVersionUID = 1L;
public final static String TABLE_NAME = "usr_profile";
@Id
@Column (name="USR_NO")
private Integer usrNo;
@Column (name="USR_Address", length=20, nullable=true, unique=false)
private Integer usrAddress;
@Column (name="USR_COUNTRY", nullable=true, unique=false)
private String usrCountry;
other fields constructor, no-arg constructor, getter and setter removed for brevity
@Repository
public interface USRRepository extends JpaRepository<USR, Integer> {
@Query("SELECT o.usrNo, o.usrAddress, o.usrCountry, o.usrState, o.usrSt FROM USR o WHERE o.usrNo=?1")
USR findUsrRecordByUsrNo(Integer usrNo);
}
在这里,我创建了一个具有 get 映射的 Controller 类
@GetMapping ("/CmpUsr")
public ResponseEntity<String> cmpLookup() {
USR us = usrRepository.findUsrRecordByUsrNo(12557);
return new ResponseEntity<>(us.toString(), HttpStatus.OK);
}
我收到此异常
SEVERE:Servlet.service()的servlet[调度服务器]在上下文中与路径[]抛出异常(请求处理失败;嵌套异常org.springframework.core.convert.ConversionFailedException:未能从类型[java.lang.Object[]]转换为类型[com.newprof.userApp.domain.USR]的值(12557,115 Minesota黄色Rd, US, PH,000991);嵌套异常org.springframework.core.comvert.ConverterNotFoundException:没有找到能够从类型[java.lang.Integer转换为类型[com.newprof.userApp.domain.USR]的转换器
改变这一点:
@Query("SELECT o.usrNo, o.usrAddress, o.usrCountry, o.usrState, o.usrSt FROM USR o WHERE o.usrNo=?1")
USR findUsrRecordByUsrNo(Integer usrNo);
}
有了这个:
@Query("SELECT new com.newprof.userApp.domain.USR(o.usrNo, o.usrAddress, o.usrCountry, o.usrState, o.usrSt) FROM USR o WHERE o.usrNo=?1")
USR findUsrRecordByUsrNo(Integer usrNo);
}
在异常中,它说:未能从类型[java.lang.Object[]]转换为类型[com.newprof.userApp.domain.USR]。
这基本上意味着查询语句返回一个对象数组:java.lang.object[]。
所以我的计划是,你在查询中直接调用你的USR构造函数。
编辑
找到了答案。
所以你把这个加到你的查询中:
new com.newprof.userApp.domain.USR(o.usrNo, o.usrAddress, o.usrCountry, o.usrState, o.usrSt)
现在它告诉您:无法解析构造函数com.newprof.userApp.domain.USR()。这是鲁格特。因为没有这样的构造函数。您需要将其添加到您的实体中。
您需要添加类似这样的内容:
public USR (Integer usrNo, Integer usrAddress, String usrCountry, String usrState, String usrSt) {
this.usrNo = usrNo;
this.usrAddress = usrAddress;
this.usrCountry = usrCountry;
this.usrState = usrState;
this.usrSt = isrSt;
}
这个全新的构造函数将在语句中调用com.newprof.userApp.domain.USR(o.usrNoo.usrAddresso.usrCountryo.usrStateo.usrSt)
: D
请尝试此代码。我认为问题在于返回对象与选择值不同。
@Repository
public interface USRRepository extends JpaRepository<USR, Integer> {
@Query("SELECT o FROM USR o WHERE o.usrNo=?1")
USR findUsrRecordByUsrNo(Integer usrNo);
}
我无法解决这个问题。我得到了“线程中的异常”main”org.hibernate.LazyInitializationException:未能延迟初始化角色集合:org.sandy.domain.Location.items,没有会话或会话被关闭”我知道会话已关闭,但tx: notionation-drive@Transactional应该确保打开会话。它可以很好地与EAGER获取一起工作。哦,是
我挣扎了两天试图解决这个问题,我不知道我还能做什么。在我将< code>@Audit包含在实体中之前,我的系统工作得非常好。当然,我在。pom文件。 我已经尝试过这些帖子: Hibernare envers Audit with Spring data JPA 和 Spring Boot Spring-data-enverHibernatejava.lang.NoSuch方法错误:org.hibe
使用具有Hibernate状态的Spring Data JPA作为提供者导致无限循环的OneTo多国关系 这里的问题不是异常的类型,而是导致这个异常的无限循环 我尝试@JsonIgnoreProperties这给了我另一个错误= 后引用的解决方案没有解决我的问题的解决方案。 一种说法是使用@ JsonManagedReference和@JsonBackReference,这确实停止了递归,但是从结
在我的spring boot应用程序中,我试图进行批插入以提高写入性能。问题是,我定期获得重复数据,对于这些数据,我的表上有一些唯一的约束。在进行串行插入时,我只捕获DataIntegrityException并忽略它们。但在执行批插入时,即使一次插入失败,也不会保存整个批。我希望hibernate仍然保存不会抛出错误的记录。我正在使用存储库。saveAll()用于插入,我的数据库是Mysql
我有两个实体。父母和孩子。 儿童知识库。JAVA 我试图通过标准找到子实体,它应该总是有父实体。 我得到一个例外,它试图在地址表中找到parentObj。 我找到了这个链接,并尝试了Joep给出的解决方案,但出现了相同的错误。 Spring数据JPA JpaSpecificationExecator EntityGgraph 我错过了什么。我无法理解为什么/如何在just Child对象中查找pa
使用Spring Data JPA关键字时,以下两者之间是否存在任何差异: 和