Bonjour à tous,
J'ai quelque soucis pour gerer un cascade delete particulier dans une relation one-to-many.
J'ai dans ma DB une une table localisations (many) faisant référence(colonne num_orga) à ma table unites (one). Je veux que lorsque je supprime une unite, les localisations concernées soient également supprimées.
J'ai un EJB UniteOrganisationnelleBean et un EJB LocalisationBean dont voici le code concernant la relation posant probleme:
Je n'ai pas de ON DELETE CASCADE du cote de ma DB. J'utilise SQL serveur 2000.
- Dans UniteOrganisationnelleBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /** * @ejb.relation name = "Unite-Localisations" * role-name = "Unite" */ public abstract Collection getLocalisations();- Dans LocalisationBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /** * @ejb.relation name = "Unite-Localisations" * role-name = "Localisations" * cascade-delete="yes" * @jboss.relation related-pk-field = "numero" * fk-column="num_orga" * fk-constraint="true" */ public abstract UniteOrganisationnelleLocal getUniteOrganisationnelle();
Lorsque j'essaye, de mon programme, de faire un remove() sur une "instance" d'uniteOrganisationnelleBean, j'ai cette exception:Pourtant j'ai testé une autre relation(One-to-One) avec cascade-delete avec les tags XDoclet identiques et cela fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer] Cannot insert the value NULL into column 'num_orga', table 'PlanAction.dbo.localisations'; column does not allow nulls. UPDATE fails.
Quelqu'un pourrait-il me dire ce qui ne va pas dans mon code?
Une petite question en passant: en ce qui concerne le ON DELETE CASCADE du cote SGBD, est-il necessaire/permis/interdit si cascade-delete est précisé coté EJB?
Je n'ai pas mis le contenu du ejb-jar.xml pour gagner de la place. Si quelqu'un aimerait le voir qu'il n'hésite pas à me le dire.
Merci d'avance et un bon week-end à tous!
Partager