有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java OpenJPA+Derby在OpenJPA从1.2更新到2.2后出现了一个问题

我刚刚将OpenJPA从1.2版升级到2.2版,我的许多JUnits都失败了。他们中的大多数人是因为许多人的关系改变了他们的行为。假设我们有两个实体

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

}

当我创建一个对象并将其设置为多个对象的列表,而不是persist和commit时,我得到了这样一个异常

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猫会找到一个对象并将其放入多个对象中。一个领域,我错了吗?如果不是,我该如何实现这一点


共 (1) 个答案

  1. # 1 楼答案

    One对象的列表中的每个Many对象在保存前都应该是setOne