Doelstelling: entitybean verwijderen en gerelateerde beans worden mee verwijderd.
Probleem: javax.ejb.RemoveException: Could not remove entity wat me ook niet verbaast aangezien jboss de tabel aanmaakt zonder cascade restricties op de foreign keys in te stellen. Ik kan ze wel manueel aanpassen en dan worden de waardes in de database effectief verwijdert maar ik krijg nog steeds die exception.
Wat heb ik al gedaan?
Ik heb op google, het jboss forum en dit forum eenz gezocht naar problemen ivm jboss en cascade acties. In alle gevallen heb ik nooit een oplossing zien staan dit terwijl ik meldingen van het probleem zie van bijna 6 maanden geleden.
Wat de bean betreft heb ik met xdoclet de relatie ingesteld
En het resultaat in ejb-jar.xml is het volgende
In jboss-cmp.xml staat het volgende
Wat er mij allemaal correct uitziet. Tenminste de cascade tag verschijnt wel maar wordt gewoon niet toegepast. Ik kan me niet echt voorstellen dat dit de bedoeling kan zijn dus wat is nu de aan te raden oplossing?
Het beetje uitleg dat je erover vindt is ook niet echt duidelijk en het kan toch niet de bedoeling zijn dat ik zelfs aan de kant van de gerefereerde bean instellingen moet maken voor alle soort relaties die ernaar gemaakt kunnen worden.
Maargoed als iemand een idee heeft dan hoor ik het graag.. ondertussen zoek ik nog een beetje verder.
Probleem: javax.ejb.RemoveException: Could not remove entity wat me ook niet verbaast aangezien jboss de tabel aanmaakt zonder cascade restricties op de foreign keys in te stellen. Ik kan ze wel manueel aanpassen en dan worden de waardes in de database effectief verwijdert maar ik krijg nog steeds die exception.
Wat heb ik al gedaan?
Ik heb op google, het jboss forum en dit forum eenz gezocht naar problemen ivm jboss en cascade acties. In alle gevallen heb ik nooit een oplossing zien staan dit terwijl ik meldingen van het probleem zie van bijna 6 maanden geleden.
Wat de bean betreft heb ik met xdoclet de relatie ingesteld
code:
1
2
3
4
5
6
7
8
9
10
11
12
| * @ejb:relation
* name = "Crew-User"
* role-name = "Crew-is-User"
* cascade-delete = "yes"
* target-ejb = "User"
* target-role-name = "User-can-be-Crew"
* target-cascade-delete = "yes"
*
* @jboss:relation
* fk-constraint = "true"
* fk-column = "userid"
* related-pk-field = "name" |
En het resultaat in ejb-jar.xml is het volgende
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <ejb-relation >
<ejb-relation-name>Crew-User</ejb-relation-name>
<ejb-relationship-role >
<ejb-relationship-role-name>Crew-is-User</ejb-relationship-role-name>
<multiplicity>One</multiplicity>
<cascade-delete/>
<relationship-role-source >
<ejb-name>Crew</ejb-name>
</relationship-role-source>
<cmr-field >
<cmr-field-name>user</cmr-field-name>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role >
<ejb-relationship-role-name>User-can-be-Crew</ejb-relationship-role-name>
<multiplicity>One</multiplicity>
<cascade-delete/>
<relationship-role-source >
<ejb-name>User</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation> |
In jboss-cmp.xml staat het volgende
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <ejb-relation>
<ejb-relation-name>Crew-User</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Crew-is-User</ejb-relationship-role-name>
<fk-constraint>true</fk-constraint>
<key-fields/>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>User-can-be-Crew</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>name</field-name>
<column-name>userid</column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
</ejb-relation> |
Wat er mij allemaal correct uitziet. Tenminste de cascade tag verschijnt wel maar wordt gewoon niet toegepast. Ik kan me niet echt voorstellen dat dit de bedoeling kan zijn dus wat is nu de aan te raden oplossing?
Het beetje uitleg dat je erover vindt is ook niet echt duidelijk en het kan toch niet de bedoeling zijn dat ik zelfs aan de kant van de gerefereerde bean instellingen moet maken voor alle soort relaties die ernaar gemaakt kunnen worden.
Maargoed als iemand een idee heeft dan hoor ik het graag.. ondertussen zoek ik nog een beetje verder.