java - hibernate @OneToOne 给出错误

标签 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

最佳答案

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

如果您需要将它们视为一个集合,请在代码中执行。

此外,如前所述,您需要使用 @OneToMany/@ManyToOne 而不是 @OneToOne@ManyToOne 不需要 mappedBy

关于java - hibernate @OneToOne 给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440196/

相关文章:

java - 当App被推送到后台并重新创建时,RecyclerView未恢复LayoutManager状态

java - 有没有更好的方法来实现 HashMap<String, List<HashMap<String, List<Details>>>>?

java - 失败 : alter table add constraint: Table doesn't exist on create

java - Spring JPA 多对多,额外列未更新

java - 如何将 LocalContainerEntityManagerFactoryBean 设置为 JpaTransactionManager?

java - hibernate 双向一对多插入重复项

java - 带有 JScrollPane 和原型(prototype)单元格值的 JList 包裹元素名称(用点替换而不是显示水平滚动条),为什么?

java - Tomcat 如何检测 JSP 页面并将其转换为 Servlet?

java - 为什么 JPA 规范(包括 2.0)或 Hibernate 扩展不允许您指定生成器,例如@Version 注释的 Oracle 序列

java - JPA继承建模问题