关于配置Hibernate乐观锁的问题

问题描述

直接上代码:public class DzCyxx extends BaseEntity<dzcyxx> {private static final long serialVersionUID = 1L;@ManyToOne(cascade = { CascadeType.MERGE })@JoinColumn(name = "RSXX_ID")private HrArchive hrArchives;@ManyToOne(cascade = { CascadeType.MERGE })@JoinColumn(name = "ZZJG_ID")private DzZzjg dzZzjg;private Date jrzz_d;private String zw_type;private String zzmm_type;private String bm;private Integer sign;@OptimisticLock(excluded=true)@Versionprivate Integer version;}这样配置version好像不对,启动Tomcat就报错:Caused by: org.hibernate.AnnotationException: @OptimisticLock.exclude=true incompatible with @Id, @EmbeddedId and @Version: com.gkhb.mis.sxzz.dzz.bean.DzCyxx.version问题补充Version用的JPAOptimisticLock用的Hibernate  Annotation

解决方案

@OptimisticLock(excluded=true) 去掉呗,我们从来就是一个@Version。

时间: 2024-08-02 13:25:43

关于配置Hibernate乐观锁的问题的相关文章

Hibernate乐观锁的实现原理剖析与使用乐观锁时的注意点

Hibernate支持乐观锁.当多个事务同时对数据库表中的同一条数据操作时,如果没有加锁机制的话,就会产生脏数据(duty data).Hibernate有2种机制可以解决这个问题:乐观锁和悲观锁.这里我们只讨论乐观锁. Hibernate乐观锁,能自动检测多个事务对同一条数据进行的操作,并根据先胜原则,提交第一个事务,其他的事务提交时则抛出org.hibernate.StaleObjectStateException异常. Hibernate乐观锁是怎么做到的呢? 我们先从Hibernate乐

hibernate 乐观锁 异常没有抛出问题 StaleObjectStateException

问题描述 在java程序内采用hibernate乐观锁,版本号后台数据库有增加,但用trycatch捕捉不到StaleObjectStateException异常.<versionname="theversion"column="theversion"type="java.lang.Integer"/>求救!谢谢! 解决方案 解决方案二:各位有没有碰到类似问题!谢谢!

请教Hibernate乐观锁和悲观锁相关问题

问题描述 1.这两个锁仅仅是用来解决并发的问题, 防止多人同时操作同一数据造成错误的吗? 2.如果只是用来解决并发操作同一数据的问题, 数据库的隔离级别不就是干这个的吗, 那 乐观锁和悲观锁还有什么意义? 3.是不是隔离级别和锁用一种就可以了, 因为他们解决的是同一种问题 解决方案 隔离级别控制的是事务之间允许并发的程度(这样说可能不太准确,请google 一下read uncommit, read commited, repeatable, serialize几种隔离级别以及相应的案例就清楚了

详解 hibernate 悲观锁 乐观锁 深入分析 代码实例

首先,为什么要有锁这种概念和技术呢? 什么是锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性.如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化.此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 "锁" ,即给我们选定的目标数据上锁,使其无法被其他程序修改.Hibernate 支持两种锁机制:

关于spring+hibernate 乐观锁定问题

问题描述 项目存在并发急用hibernate乐观锁我对这方面不怎么了解只是用ibatis简单用过那位朋友有代码发过来看看万分感谢 解决方案 解决方案二:用version作为版本号,每次更新或者新增前,检查当前PO的版本比数据库里面的版本高还是低,如果高,则正常操作,低则证明是脏数据,不进行操作.

【hibernate框架】使用hibernate实现悲观锁和乐观锁

四种隔离机制不要忘记:(1,2,4,8) 1.read-uncommitted:能够去读那些没有提交的数据(允许脏读的存在) 2.read-committed:不会出现脏读,因为只有另一个事务提交才会读取来 结果,但仍然会出现不可重复读和幻读现象. 4.repeatable read:MySQL默认.可重复读,读数据读出来之后给它加把锁, 其他人先别更新,等我用完了你再更新.你的事务没完,其他事务就不可能改这条记录. 8.serializable:序列化,最高级别.一个一个来,不去并发.效率最低

hibernate 用version标签实现乐观锁后,在web中如何使用呢?

问题描述 hibernate 用version标签实现乐观锁后,在web中如何使用呢?我们现在是将po实例数据转成json后传送到客户端,然后再传送回来的.是否json数据中还需要包含version字段? 解决方案 肯定要包含

oracle乐观锁和悲观锁概述

一.问题引出 1. 假设当当网上用户下单买了本书,这时数据库中有条订单号为001的订单,其中有个status字段是'有效',表示该订单是有效的: 2. 后台管理人员查询到这条001的订单,并且看到状态是有效的: 3. 用户发现下单的时候下错了,于是撤销订单,假设运行这样一条SQL: update order_table set status = '取消' where order_id = 001: 4. 后台管理人员由于在②这步看到状态有效的,这时,虽然用户在③这步已经撤销了订单,可是管理人员并

数据库悲观锁和乐观锁

一.Oracle Oracle数据库悲观锁与乐观锁是本文我们主要要介绍的内容.有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定. 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁.什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住.而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数