Hibernate @OneToOne给出了错误

时间:2013-01-21 13:56:16

标签: java hibernate orm hibernate-mapping

我有两个实体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

1 个答案:

答案 0 :(得分:3)

您必须创建两个不同的集合,mappedBy分别指向firstItemsecondItem

如果您需要将它们作为单个集合查看,请在代码中进行。

另外,如前所述,您需要使用@OneToMany / @ManyToOne代替@OneToOne@ManyToOne不需要mappedBy