我可能在JPA中完全误解了ForegignKey。但是在真实数据库中,当您的表A具有到另一个表B的外键时,那么在持久化/合并表A时,该键是否不必存在于表B中?
这是我的问题的一个示例:
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
String name;
// getters and setters....
}
@Entity
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
@ManyToOne(targetEntity = Person.class)
@JoinColumn(name = "person_id", referencedColumnName = "id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT))
Person person;
// getters and setters
}
在我的世界中,必须要在数据库中存在一个Person才能保存Pet。但是,不,我可以使用Person = null持久保存Pet实例,而不会出现任何问题。现在肯定可以将Person引用标记为@NotNull或optional = false,但这不是我想要的。我要确保当我坚持养宠物时,存在的人存在。我应该怎么做?在这种情况下,无法使用@OneToMany in Person进行2种方式的映射,因为我大约有20多个具有“ Person”外键约束的实体