Toplink试图坚持null对象

时间:2009-11-09 20:09:33

标签: java jpa toplink-essentials

我有一个对象“Instance”,里面有另一个对象“Course”。尝试持久保存新的Instance对象时,如果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吗?

1 个答案:

答案 0 :(得分:1)

  

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

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

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