Hibernate не позволяет удалить дочерний элемент - PullRequest
0 голосов
/ 11 декабря 2018

Допустим, у меня есть 2 таких объекта

class Parent {
    String name;
    Child children;
}

class Child {
    String name;
    Parent parent; 
}

Дело в том, что я не хочу разрешать удаление дочернего элемента из базы данных, если он связан с каким-либо Parent -> дочерний элемент в parent не может бытьноль.Есть ли способ сделать это?Я мог бы просто проверять это с помощью некоторого forloop каждый раз, когда я пытаюсь удалить child из db (например, запросить всех родителей и проверить их childId), но это не очень эффективно.

Ответы [ 2 ]

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

Вероятно, ваш пример должен быть:

public class Parent {
    @Id
    @GeneratedValue
    private long id;

    @OneToMany(optional=false)
    private Set<Child> children;

    // getter/setter
    ...
}


public class Child {
    @Id
    @GeneratedValue
    private long id;
    private String name;

    // getter/setter
    ...
}

Итак, взгляните на эту аннотацию: @OneToMany (необязательно = false), это для применения ограничения NOT NULL.

Здесь выможно найти больше информации: http://docs.jboss.org/hibernate/core/4.2/manual/en-US/html_single/#d5e5674

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

Ваш вопрос четко не определен, но я предположу, что вы используете теги, такие как @Entity, так как вы добавили теги Hibernate и jpa.

В этом случае вы должны использовать отношения @OneToMany (Parent -> child) и @ManyToOne in (Child -> Parent).Если вы сделаете это, один из них сохранит идентификатор (или то, что вы используете в качестве столбца идентификатора).Когда вы делаете метод addParent и removeParent (из Child), просто не удаляйте другой, и все.

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