我遇到一个问题,即单个交易中的多个更新因乐观锁定而导致失败,这对我来说没有意义,因为它在同一个交易中。 以下是我正在做的事情的一个例子:
@Entity
public class MyObj {
@Id
private String myKey;
@Column("val")
private Integer val;
@Version
private Date lastModDate;
}
public interface MyRepo extends JpaRepository<MyObj, String> {
}
@Component
public class MyComponent {
@Resource
MyRepo repo;
@Transactional
public void doUpdates() {
for (int i=0; i<4; i++) {
MyObj obj = repo.findOne("thekey");
obj.setVal(i);
repo.save(obj);
}
}
}
由于休眠StaleObjectStateException,对第二次尝试的repo.save()调用失败:Row被另一个事务更新或删除。
这对我来说没有意义,因为它应该与我在for循环中以相同的方法进行同一交易。
我在这里完全错了,或者这个东西应该正常工作,也许我有一些配置问题?
我也试过调用saveAndFlush()而不是save()但结果相同。