我的Web应用程序使用Spring(4.2.9),Spring Data(3.2.5),JPA,Hibernate(4.3.8)和MS SQL Server(2014)。我希望能够展现全局并找到解决这个问题的方法。
这是受影响的类:
Class Affected {
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id;
@Version
private Long version = 1L;
//getters and setters of the above two fields.
}
这是另一个类并保存其对象导致Affected类的版本增加。 Pleaese注意到两个班级之间没有任何关系。
Class Reason {
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id;
}
获取受影响对象的对象的服务方法:
@Override
@Transactional(readOnly = true)
public Survey getAffectedById(Long id) {
return affectedRepository.findOne(id);
}
这是Web控制器方法中的流程:
在这两个步骤之后,加载的受影响对象的版本号增加1.如果我删除第二步,则受影响的版本号没有变化。
我无法弄清楚这种增加的原因。我知道更多的代码或细节是有帮助的,但我不想在这里过度使用这些人,实际的代码也比这复杂得多。我希望能够找到解决这个问题的方向。