J'ai deux clases connexes annotées JPA. Alarme et statut. Une alarme peut avoir un statut.JPA ne génère pas de restrictions FK «sur suppression de l'ensemble»
Ce dont j'ai besoin, c'est de pouvoir supprimer un état et "propager" une valeur nulle aux alarmes qui sont dans cet état qui a été supprimé.
En d'autres termes, j'ai besoin que la clé étrangère soit définie comme "lors de la suppression de l'ensemble".
@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
}
Exemple:
Avant:
STATUS
id description
1 new
2 assigned
3 closed
ALARMS
id status
1 1
2 2
3 2
Après (suppression de l'état avec id = 2)
STATUS
id description
1 new
3 closed
ALARMS
id status
1 1
2 NULL
3 NULL
J'utilise Hibernate et PostgreSQL, la génération automatique de la base de données à partir du code source. J'ai essayé avec tous les CascadeType possibles sans succès.
Y a-t-il quelque chose qui ne va pas dans le code? Est-il possible de le faire avec JPA?
Merci. Vous avez raison, je l'ai juste changé en une relation ManyToOne, et j'ai ajouté le paramètre nullable = true, mais le résultat est toujours le même :( –