Один на один удалить на каскаде - PullRequest
4 голосов
/ 02 февраля 2012

У меня есть 2 класса: вход и содержание.

public class Entry implements Serializable {
     @OneToOne(cascade=CascadeType.ALL)
     private Content content;
}

И у Контента есть свои значения (имя и т. Д. И т. Д.) ... Что я хочу сделать, если контент удален, я хочу удалить любую запись, связанную с ...

Это не типичная сиротская проблема (я не удаляю запись! Я удаляю контент)

Запись может иметь или не иметь контент, связанный с ... и existenc содержимого не зависит от записей...

Как мне сказать hibernate "Эй ... если вы собираетесь удалить контент, найдите любой связанный FK и удалите его тоже!"

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Почему бы не создать ссылку из контента на запись следующим образом:

public class Content implements Seralizable {
    @OneToOne(cascade=CascadeType.REMOVE, optional=true)
    private Entry entry;
}

Обратите внимание на необязательный атрибут.Это означает тот факт, что Контент может не иметь связанной с ним Записи, как вы сказали в своем сообщении.

0 голосов
/ 02 февраля 2012

Сделать ассоциацию двунаправленной и каскадно удалить:

public class Content {
    ...
    @OneToOne(mappedBy = "content", cascade = CascadeType.REMOVE)
    private Entry entry;

}
...