У меня есть два связанных клана JPA-аннотированных. Тревога и состояние. Один сигнал тревоги может иметь один статус.
Мне нужно, чтобы иметь возможность удалять одно состояние и "распространять" нулевое значение в Alarms, которые находятся в этом статусе, который был удален.
То есть, мне нужно, чтобы внешний ключ определялся как " при удалении set null".
@Entity
public class Alarm {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
@SequenceGenerator(name="sequence", sequenceName="alarm_pk_seq")
private Integer id;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idStatus")
private Status status;
// get/set
}
@Entity
public class Status {
@Id
@Column(name="idStatus")
private Integer id;
private String description;
// get/set
}
Пример:
До:
STATUS
id description
1 new
2 assigned
3 closed
ALARMS
id status
1 1
2 2
3 2
После (удаление статуса с id = 2)
STATUS
id description
1 new
3 closed
ALARMS
id status
1 1
2 NULL
3 NULL
Я использую Hibernate и PostgreSQL, автоматически генерируя базу данных из исходного кода. Я пробовал с любым возможным CascadeType без успеха.
Что-то не так в коде? Можно ли это сделать с помощью JPA?