У меня простое отношение OneToOne:
Данные ‹-> TherapyResult
Я хотел бы выразить следующие ограничения с помощью JPA.
- Если объект Data удаляется, связанный с ним TherapyResult также должен быть удален.
- Если объект TherapyResult удаляется, связанный с ним объект Data должен оставаться в базе данных.
Первое ограничение очень просто с JPA, так как я могу добавить CascadingType.REMOVE
@OneToOne(cascade = { CascadeType.REMOVE, CascadeType.REFRESH })
private TherapyResult therapyResult;
Для второго ограничения я хотел бы добавить что-то вроде
@JoinColumn(columnDefinition = "DATA_ID BIGINT CONSTRAINT THERAPYRESULTDTAID FOREIGN KEY (DATA_ID) REFERENCES DATA (ID) ON DELETE SET NULL")
Однако это не работает. В OpenJPA похоже есть что-то похожее, но я хочу использовать JPA 2.0 и EclipseLink. Внешний ключ OpenJPA а>.
Другим решением может быть использование @PreRemove описано здесь , который работает, но выглядит для меня немного "не передовой практикой". Однако только ощущение.
Моя установка: Eclipse 3.7.1 EclipseLink 2.3 Apache Derby 10.8.3 и/или HSQLDB
любая помощь приветствуется, Муки