4

これは新しい例外ではありません。スタック オーバーフローに関する多くのフォーラム投稿を調べて、なぜこれが起こっているのかを理解しました。しかし、問題を解決するには助けが必要です。

2 つのエンティティ Bean 機器クラスと機器があります。以下はコードです。

public class EquipmentClass implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "class_name")
    private String className;
    @Column(name = "description")
    private String description;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "equipmentClass")
    private Collection<Equipment> equipmentCollection;

    // getter and setter methods
 } 


public class Equipment implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "created_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdOn;
    @Basic(optional = false)
    @Column(name = "updated_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date updatedOn;
    @JoinColumn(name = "equipment_class", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private EquipmentClass equipmentClass;

    // setter and getter methods 

}

機器の追加中に、機器クラスを設定し、それを使用して永続化しequipmentFacade.create(equipment); ます (これはエンティティを永続化します)

  EquipmentClass ec = equipment.getEquipmentClass();   
 >>> ec.getEquipmentCollection().add(equipment); << 
  equipmentClassFacade.edit(ec);

上記のマークされた ( >> < ) 行で例外が発生します。

ここで説明したように、私はやろうとしec.getEquipmentCollection().size();ました。しかし、私はそこに例外があります。

どうすればよいですか?どんな助けでも大歓迎です。

4

1 に答える 1

3

equipment.getEquipmentClass().getEquipmentCollection().size()インスタンスの取得後に追加equipmentすると、問題が解決すると思います。
事実はおそらく、getEquipmentCollection() を呼び出す場所でパーシスタンス コンテキストに到達できなくなっていることですが、コンテキストに関する追加情報 (ejb、トランザクション コンテキストなど) が必要です。
例外がスローされた場所で entityManager インスタンスにアクセスできますか?

于 2013-03-28T16:31:57.080 に答える