我有一个在它的一个字段上使用@version 的实体,我想实现如果两个事务同时修改这个实体,一个会失败(并获得乐观锁异常),另一个会成功。
当我在单个 JVM 上运行此测试时,这工作正常,但是当我在集群环境中运行时,两个事务成功并且没有抛出乐观锁。
public class DeploymentLock {
@Column(name = "DEPLOYMENT_COUNTER")
private Long deploymentCounter;
@Version
@Column(name = "ENTITY_VERSION")
private Long version;
...
}
我错过了什么吗?我需要在@Version 下使用“@Generated(GenerationTime.ALWAYS)”吗?
顺便说一句,我在我的应用程序中使用 Spring 和 hibrnate ......知道吗?