我刚刚将OpenJPA从版本1.2更新到2.2,并且我的许多JUnit都失败了。其中大多数是因为ManyToOne关系改变了行为。假设我们有两个实体
package org.my;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
@Entity
public class Many {
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private One one;
public One getOne() {
return one;
}
public void setOne(One one) {
this.one = one;
}
}
和
package org.my;
import java.util.List;
@Entity
public class One {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "one")
private List<Many> many;
public List<Many> getMany() {
return many;
}
public void setMany(List<Many> many) {
this.many = many;
}
}
当我创建一个对象并将其设置为List of Many时,除了持久化和提交之外,我得到了这样的异常
org.apache.openjpa.persistence.InvalidStateException: The field "one" of instance "org.my.Many@4d9cfefb" contained a null value; the metadata for this field specifies that nulls are illegal.
我以为OpenJPA cat找到一个对象并把它放到Many.one字段中,我错了吗?如果不是我怎么能实现这个目标?
答案 0 :(得分:0)
一个对象的列表中的每个很多对象在保存之前应首先 setOne