0

我有一个对象“实例”,里面有另一个对象“课程”。当尝试持久化一个新的 Instance 对象时,如果 Course 为空,我会收到以下错误:

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;
    }

我不明白为什么它试图坚持一些空的东西。如果它为空,它应该只是将该字段保留在数据库中,对吗?

4

1 回答 1

1

我不明白为什么它试图坚持一些空的东西。如果它为空,它应该只是将该字段保留在数据库中,对吗?

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

所以,对我来说,这个错误是由于没有为实体OneToOne中的关系结束指定正确的级联类型。Instance我不能说你为什么不使用ALL,但你至少需要添加PERSIST.

于 2009-11-10T00:07:08.993 回答