У меня есть простой OneToOne отношения:
данных < ->TherapyResultJPA 2.0 Ограничение внешнего ключа
Я хотел бы выразить следующие ограничения с JPA.
- Если данных объект получает удаляется соответствующий TherapyResult следует удалить, слишком
- Если TherapyResult объект получает удален связанный данных объект должен оставаться в БД
Первое ограничение очень просто с 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 ForeignKey.
Другое решение будет использовать @PreRemovedescribed here, который работает, но выглядит немного «не-лучшими» для меня. Однако просто чувство.
Моя установка: Затмение 3.7.1 EclipseLink 2,3 Apache Derby 10.8.3 и/или HSQLDB
любая помощь приветствуется, MUKI
Это не похоже, вступает в силу с JPA 2.1: https: //docs.jboss. org/hibernate/jpa/2.1/api/javax/persistence/ForeignKey.html – Piohen