java - 有没有办法与实体继承建立双向关系。在 JPA 中加入判别器值?
问题描述
我有一个 ValuedCustomer 和 Order,我想在 hibernate 中建立双向关系。我该怎么做呢?谢谢
@Entity
@Table(name="VCUST")
@DiscriminatorValue("VCUST")
@PrimaryKeyJoinColumns({
@PrimaryKeyJoinColumn(name="CUST_ID",referencedColumnName="ID"),
@PrimaryKeyJoinColumn(name="CUST_TYPE",referencedColumnName="TYPE")
})
public class ValuedCustomer extends Customer {
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "customer_order", nullable = true)
private Set<Order> orders = new HashSet<>();
}
@Entity
@Table(name=“Order”)
public class Order {
@Id
private int id;
}
解决方案
这很容易。重要的是 @OneToMany 中的 mappedBy 属性,它指示 realtionship 由 Order 实体管理。
@Entity
@Table(name="VCUST")
@DiscriminatorValue("VCUST")
@PrimaryKeyJoinColumns({
@PrimaryKeyJoinColumn(name="CUST_ID",referencedColumnName="ID"),
@PrimaryKeyJoinColumn(name="CUST_TYPE",referencedColumnName="TYPE")
})
public class ValuedCustomer extends Customer {
@OneToMany(mappedBy= 'valuedCustomer" fetch = FetchType.LAZY, cascade = CascadeType.ALL,orphanRemoval = true)
private Set<Order> orders = new HashSet<>();
}
@Entity
@Table(name=“Order”)
public class Order {
@Id
private int id;
@ManyToOne
private ValuedCustomer valuedCustomer;
}
推荐阅读
- python-3.x - python3:如何将代码直接粘贴到调用函数的控制台中,而不必加载 .py 文件?
- cloud-foundry - PCF Config Server 定期刷新配置?
- python - 如何在列表末尾获取某些值,每隔一段时间获取这些值,并在 Python 中的原始列表中插入某些位置?
- flutter - 我使用flutter_modular,我需要动态创建自定义转换。我怎么能做到这一点?
- javascript - 使用 darge-d3 的可折叠力布局
- java - Java - 将一个元素添加到不可变列表
- postgresql - 如何根据查询结果退出 psql
- python - 使用 pytest 的 Python 项目使用的正确文件夹结构是什么?
- java - Flutter 为 pub-cache 生成错误
- django - sudo apt install python3-dev for windows