0

OpenJPA をバージョン 1.2 から 2.2 に更新したところ、多くの JUnit が失敗しました。それらのほとんどは、ManyToOne 関係が動作を変更したためです。2 つのエンティティがあるとします。

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

}

1 つのオブジェクトを作成し、それを 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 が One オブジェクトを見つけて Many.one フィールドに入れると思ったのですが、間違っていますか? そうでない場合、どうすればこれを達成できますか?

4

1 に答える 1

0

List of Oneオブジェクト内のすべての Manyオブジェクトは、保存する前にまずsetOneにする必要があります

于 2012-10-05T09:49:15.820 に答える