Ich habe zwei verwandte Klassen JPA-annotiert. Alarm und Status. Ein Alarm kann einen Status haben.JPA generiert nicht "on delete set null" FK Einschränkungen
Was ich brauche, ist in der Lage, einen Status zu löschen und einen Nullwert an die Alarme, die in diesem Status sind, die gelöscht wurde, zu "propagieren".
Das heißt, ich brauche den Fremdschlüssel definiert als "auf löschen Null Null gesetzt".
@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
}
Beispiel:
Vorher:
STATUS
id description
1 new
2 assigned
3 closed
ALARMS
id status
1 1
2 2
3 2
Nach (Löschen den Status mit id = 2)
STATUS
id description
1 new
3 closed
ALARMS
id status
1 1
2 NULL
3 NULL
ich Hibernate und PostgreSQL verwenden, die Datenbank automatisch zu erzeugen aus dem Quellcode. Ich habe mit jedem möglichen CascadeType ohne Erfolg versucht.
Ist im Code etwas falsch? Ist es möglich, dies mit JPA zu tun?
Vielen Dank. Du hast Recht, ich habe es gerade in eine ManyToOne-Beziehung geändert, und ich habe den Nullable = true-Parameter hinzugefügt, aber das Ergebnis ist immer noch dasselbe :( –