当前位置: 首页 > 面试题库 >

@OneToMany没有逆关系并且没有联接表?

周鸿光
2023-03-14
问题内容

这与“没有单独的联接表的hibernate@OneToMany”类似,因为我需要一个没有联接表的@OneToMany关系。但是,我也不想定义逆关系。删除相反的内容似乎会导致自动生成联接表…是否有解决方法?


问题答案:

在JPA 2.0+中,您可以使用@JoinColumn作为避免生成联接表的方法。

尝试一下。

@OneToMany
@JoinColumn(name="COLUMN_NAME")

更新

上面提供的信息摘自EJB 3.0o’illy书(查找@JoinColumn批注引用了PHONE表中的CUSTOMER_ID列)。但是,普通的JPA1.0规范不支持此功能。它说的是

可以使用一对多外键映射来实现单向一对多关系,但是,此版本中不需要这种支持。希望对一对多关系使用外键映射策略的应用程序
应使这些关系双向以确保可移植性

因此 在1.0中,它是特定于供应商的实现 (这很有意义,作者在JBoss工作-hibernate背后的红帽分歧)

但是 它受到JPA 2.0实现的支持

如果联接用于使用外键映射策略的单向OneToMany映射, 则外键在目标实体的表中



 类似资料:
  • 我想它不干净...有没有人知道如何在不使用SQL符号的情况下使它变得简单?

  • 问题内容: 我将Spring和Hibernate用作JPA提供程序,并尝试获取@OneToMany(具有许多电话号码的联系人)以将外键保存在电话号码表中。从我的表单中,我得到一个Contact对象,其中有一个Phone(数字)列表。Contact可以正确持久保存(Hibernate从指定序列中获取PK)。电话(号码)列表也将保留正确的PK,但“联系人”表中没有FK。 希望我掌握了以上所有相关内容,

  • 问题内容: 我想使用Hibernate的条件api来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,拥有者拥有很多宠物,但是关键是关联没有映射到Java批注或xml中。 使用hql,我可以通过在查询中指定联接来选择拥有“ fido”宠物的所有者(而不是将一组宠物添加到owner类)。 可以使用hibernate条件进行相同的操作吗?如果可以,怎么办? 谢谢,J 问题答案: 我的理

  • 问题内容: 我想在以下(简化的)数据库中应用JPA: 因此,一个节点可以具有多个权限,并且一个权限可以被多个节点引用。 我希望我的班级看起来像这样: 但是注释“ @ManyToMany”似乎仅可用于“ @JoinTable”,在这种情况下,它不可用(据我所知)。有人知道修改数据库之外是否还有其他方法吗? 问题答案: JPA不允许这样做,因为它需要外键来引用完整的主键以用于标识目的,并且它可能不适用

  • 问题内容: 问题 首先,我想知道我的数据库结构很糟糕,但是目前我无法更改它。 话虽这么说,我需要在Hibernate(4.2.1)中创建一对多的双向关系,该关系不涉及主键(关系的“父”侧仅包含唯一键)并且不涉及联接表。表示这种关系的外键是从“子”到“父”的反向指针(请参见下文)。我已经搜索并尝试了各种不同的注释配置,但是没有运气。我要的是可能的吗? 数据库 GLOBAL_PART PART_REL

  • 现在表1和表2没有使用外键的直接关系。对应的JPA实体如下所示: 我的代码看起来像: 则尝试使用以下方法获取值: Table2有大约6列带有@id注释,而我不能将它更改为只有两列带有@id注释。 请告诉我: > 如果有可能为我的方法1(select子句中的子查询)使用CriteriaBuilder编写代码。 请注意,我使用的是普通的JPAAPI。DB是Oracle11g。JDK版本为1.7。