【发布时间】:2011-10-27 09:22:13
【问题描述】:
我正在尝试设置 1to0..1(零或一)关系,但遇到了问题。
现在我的假设是使用@OneToMany,而不是@OneToOne。
基本上我希望我的“子”表保存“父”的外键(我非常松散地使用子和父)。我永远不需要独立加载“儿童”
这是我要实现的基本表结构
ITEM {
ID
RELATED_ITEM_ID
}
INVOICE {
ID
}
CATALOGUE {
ID
}
表示为 Java 类,如下所示
class Item {
...
}
class Invoice {
@OneToMany(fetch=FetchType.EAGER, orphanRemoval = true, cascade = { javax.persistence.CascadeType.ALL })
@Fetch(FetchMode.JOIN)
@JoinColumn(name="RELATED_ITEM_ID", nullable=false)
Set<Item> items;
}
class Catalogue {
@OneToMany(fetch=FetchType.EAGER, orphanRemoval = true, cascade = { javax.persistence.CascadeType.ALL })
@Fetch(FetchMode.JOIN)
@JoinColumn(name="RELATED_ITEM_ID", nullable=false)
Set<Item> items;
}
上面的代码,如果我只有 Invoice 或 Catalog 在 hibernate 中注册,将创建我想要的表,并且可以完美地工作。但是,一旦我注册了 Invoice 和 Catalog,hibernate 就会向我抛出错误
org.hibernate.MappingException: Duplicate property mapping of _itemsBackref found in package.name.Item
【问题讨论】: