Toplink пытается сохранить нулевой объект - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть объект "Экземпляр" с другим объектом "Курс" внутри. При попытке сохранить новый объект 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 Ответ

1 голос
/ 10 ноября 2009

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

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

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

...