Comment puis-je supprimer en cascade une collection faisant partie d'une entité jpa?
@Entity
public class Report extends Model {
public Date date;
public double availability;
@ElementCollection
@Cascade(value={CascadeType.ALL})
public Map<FaultCategory, Integer> categories;
}
Dans un de mes emplois, j'ai le code suivant:
int n = MonthlyReport.delete("date = ?", date);
Toujours, cela ne parvient pas à supprimer l'entité avec l'erreur suivante:
La SUPPRESSION de la déclaration en contradiction avec la RÉFÉRENCE de la contrainte "FK966F0D9A66DB1E54". Le conflit est survenu dans la base de données "TFADB", table "dbo.MonthlyReport_categories", la colonne "MonthlyReport_id'.
Comment puis-je spécifier le mappage donc les éléments à partir des catégories de la collection se supprimer quand le rapport est supprimé?
source d'informationauteur emt14
Vous devez vous connecter pour publier un commentaire.
De suppression en cascade (et les opérations de cascade en général) n'est efficace que lorsque l'opération est effectuée via
EntityManager
. Pas lors de la suppression se fait en vrac supprimer via JP QL /requête HQL. Vous ne pouvez pas spécifier de cartographie qui serait de la chaîne de suppression d'éléments dansElementCollection
lorsque l'enlèvement se fait par requête.ElementCollection
annotation n'ont pas d'attribut cascade, parce que les opérations sont toujours en cascade. Lorsque vous retirez de votre entité viaEntityManager.remove()
l'opération est en cascade à laElementCollection
.Vous devez récupérer toutes les
MonthlyReport
entités que vous souhaitez supprimer et de les appelerEntityManager.remove
pour chacun d'eux. Ressemble au lieu de cela, dans Play framework, vous pouvez également appeler delete-méthode au sein de l'entité.