【问题标题】:Hibernate @ManyToOne @OneToMany for the same entity休眠 @ManyToOne @OneToMany 用于同一实体
【发布时间】:2012-05-30 13:23:38
【问题描述】:

我正在尝试创建一个实体,该实体具有父级和与他相同类型的子级(如树)。

代码如下:

@实体 @Table(name = "区域") 公共类区域{

@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

此外,我对这个设计还没有完全理解。

如果子区域由父区域映射。这不意味着“这个”区域将在孩子们中间吗? 换句话说......子区域不会是“this”类的父区域的子区域。

谢谢。

【问题讨论】:

标签: java hibernate


【解决方案1】:

This 似乎是一个类似的问题。你应该试试:

@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany (mappedBy = "parentArea")
@Cascade({CascadeType.ALL})
private Collection<Area> childAreas = new ArrayList<Area>();

【讨论】:

  • 谢谢。这实际上起到了作用。要去看看我在那里做了什么:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2012-10-05
  • 1970-01-01
  • 2022-12-03
  • 2023-03-22
相关资源
最近更新 更多