JPA @ForeginKey映射根本没有约束吗?

时间:2019-03-08 14:14:58

标签: jpa foreign-keys

我可能在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”外键约束的实体

0 个答案:

没有答案