Отключить возможность сохранения 2 детей для родителей в ассоциации OneToOne - PullRequest
0 голосов
/ 25 декабря 2018

Можно сохранить одного и того же родителя для 2 детей:

Я хочу отключить эту возможность.

домены:

@Entity
public class Child {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @OneToOne
    Parent parent;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Parent getParent() {
        return parent;
    }

    public void setParent(Parent parent) {
        this.parent = parent;
    }
}
@Entity
public class Parent {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @OneToOne(mappedBy="parent")
    private Child child;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @PreRemove
    private void preRemove() {
        child.setParent(null);
    }

}

Как изменить этот код, чтобы отключить возможность иметь одного и того же родителя для 2 детей?Должен ли я создать FK или что-нибудь?Как это сделать элегантно с JPA?

1 Ответ

0 голосов
/ 25 декабря 2018

Определите @JoinColumn на вашем @OneToOne и добавьте unique = true.Таким образом, уникальность родителей будет проверяться на стороне базы данных:

@OneToOne
@JoinColumn(name="PARENT_ID", unique = true)
Parent parent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...