Каскад Type.ALL не работает - PullRequest
       28

Каскад Type.ALL не работает

4 голосов
/ 24 февраля 2011

Я установил CascadeType.ALL в моем отношении к сущности, но он работает частично, когда я сохраняю сущность.

Пример: `Член организации:

@OneToMany(mappedBy="member", cascade={CascadeType.ALL})
private List<ContactInfo> contactInfos;

и объект ContactInfo:

@ManyToOne
@JoinColumn(name="MEMBERID")
private Member member;

`

Member подробности, а также ContactInfo данные сохраняются. Но Member.Id не обновляется в таблице ContactInfo, так как в таблице ContactInfo есть ограничение на внешние ключи.

Как мне сделать, чтобы JPA автоматически обновлял Member.Id в ContactInfo также всякий раз, когда я сохраняю Member?

С уважением,

Satya

1 Ответ

3 голосов
/ 06 февраля 2012

Если вы используете CascadeType.ALL, чтобы каскадировать только участника в ContactInfo, то Участник является его владельцем. Вы должны удалить mappedby, продублировать информацию @JoinColumn и поместить сторону @ManyToOne как не вставляемую и не обновляемую. Это сообщит hibernate, что MEMBERID CONTACTINFO должен быть обновлен при сохранении MEMBER.

Вот отображение:

Член организации:

@OneToMany
@JoinColumn(name="MEMBERID") //we need to duplicate the physical information
private List<ContactInfo> contactInfos;

Контактное лицо:

@ManyToOne
@JoinColumn(name="MEMBERID", insertable=false, updatable=false)
private Member member;

Ссылка на Hibernate Раздел 2.2.5.3.1.1

...