java – 如何在hibernate / JPA中禁用自动更新
是否可以停止hibernate自动更新持久对象?
@Transactional public ResultTO updateRecord(RequestTO requestTO) { Entity entity = dao.getEntityById(requestTO.getId()); // now update the entity based on the data in the requestTO ValidationResult validationResult = runValidation(entity); if(validationResult.hasErrors()) { // return ResultTO with validation errors } else { dao.persist(entity); } } 这是代码中发生的情况,我检索hibernate将被认为处于持久状态的实体,然后我更新实体中的一些字段,然后将该实体传递给验证.如果验证失败,那么不要udpate,如果验证成功,那么持久化该实体. 这是这个流程的主要问题:因为我更新了要在验证中使用的实体,无论我是否在DAO中调用persist()方法,并不重要,因为hibernate将始终更新记录检测到实体已被更改并标记为更新. 让我想起我可以改变我做验证的方式,解决问题,所以我对解决方案不感兴趣.我有兴趣知道我如何能够禁用其自动更新持久性对象的hibernate功能. 请记住,我正在使用hibernate的JPA实现.所以Hibernate处理hibernate特定API的具体答案对我来说无效. 我试图寻找hibernate配置,看看我是否可以设置任何配置来阻止这种行为,但没有运气. 谢谢 –EDIT — TransactionInterceptor.currentTransactionStatus()使用setRollbackOnly(); 它的作用就像一个魅力. 解决方法
为您的会话配置FlushMode.
http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |