当前位置: 首页 > 知识库问答 >
问题:

hibernate多表单外键

齐磊
2023-03-14
@Column(name = "object_type", nullable = false)
private String objectType;

@ManyToOne
@JoinColumn(name="object_id",referencedColumnName="id" ,insertable=false, updatable=false)
private Vendor vendor;

@ManyToOne
@JoinColumn(name="object_id",referencedColumnName="id",insertable=false, updatable=false)
private Customer customer;

我可以这样做吗?或者有没有其他更好的方法来处理这种情况

共有1个答案

端木望
2023-03-14

如果(联系是一对多的关系)

@OneToMany
@JoinColumn(name="object_id",referencedColumnName="id" ,insertable=false, updatable=false)
private List<Vendor> vendors;

@OneToMany
@JoinColumn(name="object_id",referencedColumnName="id",insertable=false, updatable=false)
private List<Customer> customer;

否则,如果contact是多对一,那么不要在contact类中定义外键,而是在vendor和customer类中定义外键,每个类都有一个字段,如下所示

@OneToMany
@JoinColumn(name="id",referencedColumnName="object_id" ,insertable=false, updatable=false)
private List<Contact> contacts;

还要注意LazyFetch,否则最好将其设置为false

@LazyCollection(LazyCollectionOption.FALSE)
 类似资料:
  • 我的数据库技能有点生疏,所以对我来说学习Hibernate有点难。 我一直在阅读一对一、一对多和多对多,简而言之,这是我年轻时的理解: 一对一:-表A链接到表B中的另一行,表A中的行数必须等于表B中的行数。 一对多:-每家公司可以有很多员工。 多对多:-许多医生可以拥有/分享不同的病人。(无意双关语)。 假设我有以下表格,对于殡仪员客户模型 [id[pk]、全名(char)、年龄(int)、地址(

  • 下面是一对多关系的Hibernate示例 下一个项目java文件 iml代码 在这里,一辆车应该有很多项目,同时运行两个tanles都更新了,但是 第二张桌子 正如您所看到的,这两个表都已更新,但本例中的foreignkey carts\u id没有在owner类中更新,我使用了joincolumn

  • 我有两个实体BillingAddress和ShippingAddress映射到具有鉴别器类型列的表地址。 我能够使用不同的类型值在DB中成功保存/更新两个地址类型。 我面临的问题是当我查询地址表时,如下所示: 这工作正常,但查询ShippingAddress会引发非均匀查询结果异常,即结果中同时包含ShippingAddress和Billingaddress。请让我知道,我应该怎么做。

  • 我有两个类:< code>User和< code>UserProfile。 用户类别: 用户配置文件类: 当我使用此代码时,我在具有多对多关系的表用户配置文件中获得重复的实体。我使用 函数来保存对象。我做错了什么? 然后我删除 cascadeType,出现错误:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。 Hibernate日志:

  • 问题内容: 我正在为客户/订单系统定义一个数据库,其中有两种高度不同的客户类型。因为它们是如此不同,所以只有一个客户表会非常丑陋(因为空列对于一种类型是毫无意义的,所以充满了空列)。 他们的订单虽然格式相同。我的订单表中是否可以有一列同时具有两种客户类型的外键?我已经在SQL Server中进行了设置, 创建 关系没有问题,但是我还没有尝试插入任何数据。 另外,我正在计划将nHibernate用作

  • 问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保