Java Toplink正在尝试持久化空对象

Java Toplink正在尝试持久化空对象,java,jpa,toplink-essentials,Java,Jpa,Toplink Essentials,我有一个对象“实例”,里面有另一个对象“课程”。尝试持久化新实例对象时,如果Course为null,则会出现以下错误: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: null 以下是我对课程的注释: @OneToOne(cascade = CascadeType.R

我有一个对象“实例”,里面有另一个对象“课程”。尝试持久化新实例对象时,如果Course为null,则会出现以下错误:

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;
    }
我不明白为什么它会试图保持空值。如果它为null,它应该在数据库中保持该字段为null,对吗

我不明白为什么它会试图保持空值。如果它为null,它应该在数据库中保持该字段为null,对吗

默认情况下,TopLink JPA假定实体的所有字段都是持久的。如果要指定非持久性实体的字段或属性,则需要使用
@Transient
对其进行标记(但这不是此处所需的)

因此,对我来说,这个错误是由于没有为
实例
实体中关系的
OneToOne
结尾指定正确的级联类型造成的。我说不出您为什么不使用
ALL
,但您至少需要添加
PERSIST

似乎类似: