@RestController
@RequestMapping("/save")
@Slf4j
public class saveFormController {
@Autowired
SaveFromService saveFormService ;
@PostMapping("/testSaveForm")
public ResponseMessage testSaveForm(@RequestBody SaveForm form) {
SaveForm res = saveFormService.saveApplyForm(form);
return ResponseMessage.ok(res);
}catch (Exception e){
log.error("###########异常");
log.error(e.getMessage(), e);
log.error("################################");
e.printStackTrace();
return ResponseMessage.ok("");
测试结果:
1. 请求中指定了id, 和version 但是数据库中没有这条记录,则会用数据中新的ID,生成新的记录,version还是用指定的version:
2. 请求中指定了id, 和version 但是数据库中有这条记录,结果会更新
数据库中version也会更新:
2. 请求中指定了id, 和version 但是数据库中有这条记录,但是version不正确(和数据库不一致)
代码会抛出异常
optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [comXXXX.entity.SaveForm#2654]
4. 请求中不指定了id, 和version ,数据库中会新增一条记录,并且version是0
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-05-07 09:33:30 [ERROR] org.springframework.boot.SpringApplicati...
optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was u...
原因:就是要修改的实体的version和数据库中的version对不上。hibernate就会认为别人已经并发修改了数据。
解决办法:将数据库中的version从前端回传回来。如果version和数据库一致,还是经常出现这个问题,可以考虑使用悲观锁。
一、问题描述
新开发的系统,往往可能需要将旧版的系统中的历史数据,用脚本的方式在新系统中跑一遍业务流程,其实可能是用Java代码自动调用一些业务流程接口。
在执行过程中发现报错:
2021-01-27 19:32:46.300 [http-nio-5090-exec-4] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet]:182 - Servlet.service() for servlet [dispatcherServlet] in context with path
今天遇到了nested exception is org.hibernate.MappingException: Unknown entity的问题,在网上查了方法好多,都和我的不一样。
问题描述如下:
1、我用spring+hibernate,程序在本机myeclipse访问本地mysql没有问题。
2、我在本机把数据库连接改为informix的可以访问,也可以写库。
3、我把代码
Spring Boot项目运行报错:org.hibernate.exception.SQLGrammarException: error performing isolated ;workSQL [n/a]..问题:原因以及解决办法
今天在进行spring boot项目测试时候,运行报错如下图:
org.springframework.dao.InvalidDataAccessResourceUsageException: error performing isolated work; SQL [
Unhandled exception:
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute statement
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
at org.hib.
project->clean...清除类修改后的导入信息报错
[ERROR] 2017-03-22 10:09:45.060method:org.quartz.core.JobRunShell.run(JobRunShell.java:208)
nested exception isorg.hibernate.StaleObjectStateException: Row was upda
could not prepare statement; nested exception is org.hibernate.exception.JDBCConnectionException: could not prepare statement
引用\[1\]:根据您提供的引用内容,报错信息显示为"could not prepare statement; nested exception is org.hibernate.exception.JDBCConnectionException: could not prepare statement"。这个错误通常与SQL语句执行时的问题有关。\[3\]根据官方文档的解释,@Modifying和@Transactional注解可以用于修改查询方法,而不是将其注释到域类上。@Modifying注解只在与@Query注解结合使用时才相关。这个错误可能是由于SQL语句的问题导致的。您可以检查SQL语句是否正确,并确保使用了正确的注解来执行查询。如果问题仍然存在,您可能需要进一步排查数据库连接的问题。
#### 引用[.reference_title]
- *1* *3* [jpa语句:nested exception is org.hibernate.exception.GenericJDBCException: could not extract ...](https://blog.csdn.net/qq_42818496/article/details/107608978)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [org.hibernate.exception.JDBCConnectionException:could not execute query原因及解决方法](https://blog.csdn.net/liuyingan/article/details/84364289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]