JPA @ForeginKey отображение не имеет никаких ограничений вообще? - PullRequest
1 голос
/ 08 марта 2019

Возможно, я полностью неправильно понял ForegignKey в JPA. Но в реальной базе данных, когда ваша таблица A имеет внешний ключ к другой таблице B. Тогда не должен ли этот ключ существовать в таблице B при сохранении / объединении таблицы A?

Вот пример моей проблемы:

@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 = null. Теперь, конечно, я могу пометить ссылку на Person как @NotNull или необязательно = false, но это не то, чего я хочу достичь. Я хочу убедиться, что, когда я сохраняю питомца, владелец существует. Как мне это сделать? В этом случае я не могу сделать двухстороннее сопоставление с использованием @OneToMany in Person, так как у меня есть более 20 сущностей с ограничениями внешнего ключа для "Person"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...