Данный идентификатор не должен быть нулевым с данными Spring - PullRequest
0 голосов
/ 30 января 2019

Я разрабатываю приложение, написанное на 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());
        ...
    }

    ...

}
...