Я разрабатываю приложение, написанное на Spring Framework 5
, я также использую Spring Data
для доступа к базе данных PostgreSQL
, и у меня возникает странная проблема, которая иногда возникает, когда я запрашиваю базу данных.
Короче, у меня есть служба, которая содержит myMainFunction
.Эта функция вызывается из контроллера, а эта функция вызывает myFunction
, которая вычисляет и устанавливает идентификатор объекта.myFunction
затем также запрашивает базу данных, чтобы найти, существует ли объект с вычисленным идентификатором в базе данных.
Затем myMainFunction
снова запрашивает базу данных, чтобы получить объект с тем же идентификатором, если он существует.Это линия, где иногда бросается 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());
...
}
...
}