【发布时间】:2014-11-09 19:18:42
【问题描述】:
我有一个与其自身(父子)具有递归关系的 Hibernate 实体。我使用 DbUnit XML 文件在我的测试中插入一些数据,包括关系。
但是,在我正在测试的服务中查询 parent=null(根)列表时,我也将 XML 中指定的子代作为根(也有 parent=null)。
为什么会这样?
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames={"parent", "name"}))
public class Entity {
@Id
@Column(name = "id", unique = true)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@ManyToOne
@JoinColumn(name = "parent")
private Entity parent;
@OneToMany(mappedBy = "parent")
private List<Entity> children;
}
以及 XML 数据集文件:
<dataset>
<entity id="1" name="root1" />
<entity id="2" name="root2" />
<entity id="3" name="child" parent="2"/>
</dataset>
在列出根时,我还会得到父属性为 null 的“子”实体。
如果我使用实体实例创建关系并将它们持久化,它就可以工作。
此外,我还有另一个实体与不同实体具有多对一关系(无递归),这使用 DbUnit 数据集 XML 可以按预期工作。似乎递归实体有一些问题。
【问题讨论】:
标签: java hibernate one-to-many dbunit