0

彼と同じタイプの親と子を持つエンティティを作成しようとしています(ツリーのように)。

コードは次のとおりです。

@Entity @Table(name = "areas") public class Area {

@Id
@Column(name = "id")
@GeneratedValue
private int id;

@Column(name = "name")
private String name;

@Column(name = "area_type", nullable = true)
private int areaType;

@ManyToOne
@JoinColumn(name="parent_area_id")
private Area parentArea;

@OneToMany (fetch = FetchType.EAGER, mappedBy = "parentArea")
@Cascade({CascadeType.ALL})
private Collection<Area> childAreas = new ArrayList<Area>();

このようなエンティティをデータベースに保存しようとすると、スタックオーバーフローのいくつかの投稿でこのコードが表示されます。

nested exception is org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

さらに、このデザインについて私が完全に理解していないことがあります。

子領域が親領域によってマップされている場合。「この」エリアは、ファッショナブルな子供たちの中にいるということでしょうか?つまり、子領域は「この」クラスの親領域の子にはなりません。

ありがとう。

4

1 に答える 1

2

これは同様の問題のようです。試してみてください:

@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany (mappedBy = "parentArea")
@Cascade({CascadeType.ALL})
private Collection<Area> childAreas = new ArrayList<Area>();
于 2012-05-30T13:44:15.707 に答える