模型結構沒有拋出:OptimisticLockException版本時,在春季啓動項目已經改變
@MappedSuperclass
public class BaseModel<K extends Comparable> implements Serializable, Comparable<Object> {
private static final long serialVersionUID = 1L;
@Id
private K id;
@Version
private Integer version;
// getter/setter
}
@Entity
public class MyEntity extends BaseModel<String> {
// some fields and it's getter/setter
}
記錄在我的數據庫爲my_entity
:
ID:1 版本:1 ...
以下是我的更新方法:
void update(String id, Integer currentVersion, ....) {
MyEntity myEntity = myRepository.findOne(id);
myEntity.setVersion(currentVersion);
// other assignments
myRepository.save(myEntity);
}
下面是調用此方法時正在觸發的查詢。
update my_entity set version=?, x=?, y=?, ...
where id=? and version=?
我期待OptimisticLockException時currentVersion
在上述方法中通過比1
等。
任何機構都可以幫助我,爲什麼我沒有得到OptimisticLockException? 我爲我的webmvc項目使用spring-boot。
不應該休眠管理版本屬性? –
執行該代碼時會發生什麼? –
我的實體正在更新成功,每次執行此代碼時版本都會增加1。 –