Toplink пытается сохранить нулевой объект

У меня есть объект "Экземпляр" с другим объектом "Курс" внутри. При попытке сохранить новый объект Instance я получаю следующую ошибку, если курс равен нулю:

java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: null

Вот моя аннотация для курса:

@OneToOne(cascade = CascadeType.REFRESH,optional=true)
    public Course getCourse() {
        return course;
    }

Я не понимаю, почему он пытается сохранить что-то, что является нулевым. Если это ноль, это должно просто оставить это поле нуль в базе данных, верно?

1 ответ

Решение

Я не понимаю, почему он пытается сохранить что-то, что является нулевым. Если это ноль, это должно просто оставить это поле нуль в базе данных, верно?

По умолчанию в JPA TopLink предполагается, что все поля сущности являются постоянными. Если вы хотите указать поле или свойство объекта, которое не является постоянным, необходимо пометить его как @Transient (но это не то, что вы хотите здесь).

Итак, для меня эта ошибка является результатом того, что не указал правильный тип каскада для OneToOne конец отношения в Instance Сущность. Я не могу сказать, почему вы не используете ALL но нужно хотя бы добавить PERSIST,

Другие вопросы по тегам