[hibernate-dev] Hibernate 4.0.1: regression with @OneToMany(cascade = CascadeType.REMOVE)
Steve Ebersole
steve at hibernate.org
Thu Jan 19 10:06:17 EST 2012
Just heard back from the sepc lead that this happens exactly according
to spec. The expectation is that you clean up all other cascadeable-to
references to that removed entity. Otherwise, the flush will cascade
PERSIST back to it, canceling out the remove.
I think we should add a flag to make this optional. Of course it will
have to be enabled by default to comply with JPA.
On Wed 18 Jan 2012 11:45:13 AM CST, Steve Ebersole wrote:
> I agree its not the best outcome. But according to the spec it is
> unfortunately (imo) exactly what should happen, given its current
> wording, in a case where you have not cleaned up references to the thing.
>
> On Wed 18 Jan 2012 11:39:24 AM CST, Guillaume Smet wrote:
>> On Wed, Jan 18, 2012 at 6:31 PM, Steve Ebersole<steve at hibernate.org>
>> wrote:
>>> Well really the trouble is that you are not managing the
>>> associations in
>>> memory. I understand the behavior is surprising, but had you simply
>>> cleaned
>>> up the Person reference from all its associations (as the JPA spec
>>> says you
>>> have to anyway) you would not have gotten this surprise.
>>
>> That's what we do in our applications. This is just a unit test to
>> show all the cascade features to our developers, what they can do,
>> when they fail and so on.
>>
>> The fact that a delete operation is silently ignored is disturbing IMHO.
>>
>
--
steve at hibernate.org
http://hibernate.org
More information about the hibernate-dev
mailing list