hibernate - Spring Data Jpa:如何使我的另一个表的外键是唯一的?
问题描述
我的实体
@Entity
public class ValidationStepDraftGroup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch=FetchType.EAGER)
@JoinColumn(name = "validationStepDraftGroup_id")
private List<ValidationStep> validationSteps;
// no cascade type, you shouldnt be able to modify a automationInformation by saving a ValidationStepDraftGroup
@OneToOne
@JoinColumn(name= "automation_information_aId", referencedColumnName= "aId")
private AutomationInformation automationInformation;
所以这个实体有一个单向的一对一映射。所以 ValidationStepDraftGroup 对自动化信息的 ID 有一个外键,但反之则不然。
一个automationInformation应该只能存在一个ValidationStepDraftGroup(也可以是0)。如何在 JPA 中强制执行此操作?
解决方案
那是隐含的。这是使用@OneToOne
外键唯一的结果。
假设不是,那么两个子实体将与父实体有关系,但这意味着@ManyToOne
关系 - 矛盾。
如果你想更明确一点,你可以定义一些基本类型的字段(例如Long
),这将是父 id 并unique=true
在@Column
注释中添加一个标志。
推荐阅读
- angular - 是否可以仅将 http 升级到 HttpClient 并保持一切相同
- java - PBO 缓冲区内容是什么意思?
- javascript - 如何使用 json 正文发送 post 请求,其中正文仅包含字符串而不是键值对?
- python - TensorFlow:在不同输出形状的数据集之间交替
- perfect - 完美助手 - 导入现有包时出错
- python - pyqt如何使用unittest检查登录名和密码以及结果?
- firebase - 索引未在 firebase 中定义
- ruby - 如何更新实例变量的值?
- ansible - 如何对同一目录中的多个文件执行 dos2unix 命令?
- python - 嵌套引号的Python文档表示法?