Спящий каскад - PullRequest
       4

Спящий каскад

2 голосов
/ 07 апреля 2010

Все, что генерирует обратный инжиниринг в Hibernate, выглядит примерно так:

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "column_id")
    public Itinerary getColumnId() {
        return this.columnId;
    }

Мне нужен такой сценарий: когда сеанс сбрасывается, сначала сохраняются все созданные потомки, а затем родительский объект в соответствии с ограничениями FK.

Конечно, сначала нужно сохранить детей (автоматически!), Потому что есть ограничения FK.

Вы скажете мне: есть опция CASCADE, но как ее использовать сJPA?

Я пытался добавить каскад, как это:

    @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.PERSIST)
    @JoinColumn(name = "column_id")
    public Itinerary getColumnId() {
        return this.columnId;
    }

У меня не работает.

Сначала скажите мне: что следует пометить этой директивой и какполучить это работает.

Я получаю исключение "Не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется".

И действительно, я не хочу сохранять все вручную!Постройте только ОДИН объект и сохраняйте его!

Что аннотировать, какую директиву использовать и как?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2010

Попробуйте поместить каскадную аннотацию в родительский конец сопоставления, например

@OneToMany(cascade = { CascadeType.PERSIST, 
                       CascadeType.MERGE, 
                       CascadeType.REMOVE },
           mappedBy = "children")
private Set<Children> children = new HashSet<Children>();

. Возможно, вам не нужны все эти каскадные параметры - выберите ваш выбор. ссылка на страницу на всякий случай.

1 голос
/ 07 апреля 2010

Что вам действительно нужно, это

cascade=CascadeType.SAVE_UPDATE

Но это не часть JPA. Таким образом, вы можете использовать это вместо:

cascade=CascadeType.ALL

Включает SAVE_UPDATE (с реализацией Hibernate). Но это могут быть и другие каскады, которые вам не нравятся.

0 голосов
/ 21 февраля 2013

Вам следует объединить частные аннотации JPA и Hibernate.См. документацию .

...