[jboss-jira] [JBoss JIRA] Commented: (JBAS-1098) Foreign key violation during cascade delete
Gunnar Grim (JIRA)
jira-events at lists.jboss.org
Tue Mar 27 10:06:03 EDT 2007
[ http://jira.jboss.com/jira/browse/JBAS-1098?page=comments#action_12357453 ]
Gunnar Grim commented on JBAS-1098:
-----------------------------------
Perhaps batch-cascade-delete works with multiple levels in simple one-many relationship chains but it won't work in this case:
PropertyType has many PropertyValue entities. The foreign key is in PropertyValue and references PropertyType. Both cascade-delete and batch-cascade-delete are used in the role referencing PropertyType.
PropertyValue has a one-one relationship with PropertyValueExt. The foreign key (nullable) is in PropertyValue and references PropertyValueExt. Cascade-delete is used in the role referencing PropertyValue.
Batch-cascade-delete can't be specified for the latter relationship since deployment fails with the message "Batch cascade-delete supported only for roles with no foreign keys."
If I try to remove a PropertyType that has related PropertyValue instances, and one of these have a related PropertyValueExt instance, the deletion fails with an SQL exception:
Cannot delete or update a parent row: a foreign key constraint fails ("doistudio/PropertyValue", CONSTRAINT
"FK_ExtendedValue_PropertyValue" FOREIGN KEY ("PropValueExtID") REFERENCES "PropertyValueExt" ("PropValueID"))
The same application works fine on Sun AS 8.1 and 9.0.
If it is true that you "don't invest in CMP2.x anymore" then that is a pity but hardly a reason to reject this bug IMO.
> Foreign key violation during cascade delete
> -------------------------------------------
>
> Key: JBAS-1098
> URL: http://jira.jboss.com/jira/browse/JBAS-1098
> Project: JBoss Application Server
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: CMP service
> Affects Versions: JBossAS-3.2.6 Final
> Reporter: SourceForge User
> Assigned To: Alexey Loubyansky
> Fix For: No Release
>
>
> SourceForge Submitter: sflexus .
> JBoss 3.2.5, JDK 1.4.2_04, Linux.
> I have CMP Entity Customer and CMP entity Album with
> the following relationships:
> 1) 1 Customer has Many Albums
> 2) 1 Customer has 1 Album "Inbox"
> 3) 1 Customer has 1 Album "Private"
> 4) 1 Customer has 1 Album "Recycle Bin"
> So basically there are 3 Albums each of which has double
> relationship to Customer, both 1-1 and 1-M
> Relationship (1) has cascade-delete on Album side, so if
> customer is deleted, all his albums should be deleted.
> Relationships (2)-(4) has NO cascade-delete setting,
> since (1) should be enough, as it references ALL
> customer's albums, including those referenced in (2)-(4).
> There are other entities related to Customer in the
> application, but they seem non-important (at first sight).
> If I try to remove Customer instance, I get foreigh key
> violation in the database. All foreign keys were created
> by JBoss itself. I have attached TRACE-level log. What
> happens is that all 3 albums (inbox, private and recycle
> bin, their IDs are 162, 163 and 164) are scheduled for
> cascade delete, but only the one with ID=164 is updated
> to set its CMR column to NULL before issuing DELETE
> FROM Customer SQL. The foreign key fk_album_owner
> which is being violated corresponds to relation (1) "1
> Customer has Many Albums".
> The interesting thing is that if I redeploy the application
> and issue remove again, it completes normally! Looks like
> it depends on some cache state.
> Two files are attached. First one demonstrates foreign
> key violation, second one demonstrates success deletion
> after application is redeployed.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list