我正在开发一个用
Spring Framework 5
,我也在使用
Spring Data
访问
PostgreSQL
数据库,我有一个奇怪的问题,有时在查询数据库时会发生。
简而言之,我有一个包含
myMainFunction
.该函数从控制器调用,该函数调用
myFunction
它计算并设置对象的ID。
我的功能
然后还查询数据库,以查找数据库中是否已经存在具有计算ID的对象。
然后
MyMain函数
再次要求数据库获取具有相同ID的对象(如果存在)。这条线
java.lang.IllegalArgumentException: The given id must not be null!
有时会被扔掉。
我不明白为什么会这样,为什么有时会这样,而不是一直这样?
这是导致问题的“伪代码”:
publi class MyService {
...
public myMainFunction(MyObject object) {
...
myFunction(object);
Optional<MyObject> oldObject = objectRepository.findById(object.getId());
...
}
private void myFunction(MyObject object) {
...
object.setId(calculateId(...));
Optional<MyObject> existingObject = objectRepository.findById(object.getId());
...
}
...
}