Почему я не могу обнулить атрибут «многие к одному» с помощью EclipseLink?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я не могу обнулить атрибут «многие к одному» с помощью EclipseLink?

Сообщение Anonymous »

Я работаю над платформой на основе SpringBoot, которая использует EclipseLink в качестве ORM.
В моей основной сущности есть атрибут, представляющий связь ManyToOne с другой сущностью. Атрибут имеет следующие аннотации:

Код: Выделить всё

@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = CascadeType.ALL)
@JoinColumn(name = "unit_id", referencedColumnName = "id", nullable = true)
protected Dict unit;
Проблема возникает, когда я пытаюсь обновить существующую основную сущность.
Существует два сценария обновления:

[*]Я установил нулевое значение для атрибута unit
[*]Я заменяю старое значение unit другим
< /ol>
В обоих сценариях я установил несколько новых значений для других полей, и они были сохранены правильно.
После того, как основная сущность была сохранена путем вызова сущности = репозиторий.save(entity); я вызовите метод getUnit() для объекта сущности, и для первого сценария он возвращает старое значение unit (это старое значение также хранится в БД вместо null), хотя я ожидаю null в качестве возвращаемого значения, но для второго сценария он возвращает новое значение unit, как и ожидалось, и в БД это новое значение тоже сохраняется. Поэтому кажется, что проблем с транзакцией нет.
Во время выполнения исключений не возникает. Во время отладки первого сценария я вижу нулевое значение для атрибута unit объекта сущности до тех пор, пока не будет вызван метод getUnit(). Соответствующее поле в таблице БД имеет значение NULL. В качестве БД во время тестов использовался HSQLDB.
Так в чем же проблема? Почему я не могу обнулить атрибут unit и соответствующее поле БД?

Подробнее здесь: https://stackoverflow.com/questions/787 ... clipselink
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»