我有两个实体 Item
。
它们与实体 Link
每个项目可以有多个链接,但链接是两个项目之间的连接。
问题是项目的顺序很重要。一个始终是第一个 item
,另一个是第二个 item
。
所以我的实体是这样的:
Item
private Collection<Link> links = new ArrayList<Link>();
@OneToOne(cascade = CascadeType.ALL, mappedBy = ????)
public Collection<Link> getLinks() {
return links;
}
Link
private Item firstItem;
private Item secondItem;
@OneToOne(mappedBy = ???)
public Item getFirstItem() {
return firstItem;
}
@OneToOne(mappedBy = ???)
public Item getSecondItem() {
return secondItem;
}
我应该把什么放到mappedBy
中??因为 Item
的伪映射应该像这样:
mappedBy = { "firstItem", "secondItem") }
起初我没有映射,这给出了错误:
@OneToOne or @ManyToOne on foo.bar.Item.links references an unknown entity: java.util.Collection
最佳答案
您必须创建两个不同的集合,其中 mappedBy
分别指向 firstItem
和 secondItem
。
如果您需要将它们视为一个集合,请在代码中执行。
此外,如前所述,您需要使用 @OneToMany
/@ManyToOne
而不是 @OneToOne
。 @ManyToOne
不需要 mappedBy
。
关于java - hibernate @OneToOne 给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440196/