AFAICT, databases do not support DELETEs with joins
|---------+----------------------------> | | Max Rydahl | | | Andersen | | | <[EMAIL PROTECTED]> | | | | | | 04/08/03 06:32 PM| | | | |---------+----------------------------> >------------------------------------------------------------------------------------------------------------------------------| | | | To: [EMAIL PROTECTED] | | cc: [EMAIL PROTECTED] | | Subject: Re: [Hibernate] Mass Deletes | >------------------------------------------------------------------------------------------------------------------------------| [EMAIL PROTECTED] wrote: > Many users have asked for > > session.delete("from Foo foo where foo.count=0"); > > to issue a single SQL DELETE. This is certainly not possible for objects > with collections or cascades (though it might not matter if we ignore > Lifecycle callback; not sure). For other classes it is conceptually > possible. > > Now, this is really quite easy to implement - it would take me about 1-2 > hours to do it. > > But my big problem is: how do we know which _loaded_ objects were deleted? > I don't think there is any good way to do this. All we get back from DELETE > is a row count. > > * Do we issue a SELECT beforehand, to fetch the ids ..... and then issue > the delete? > * Do we just disable mass delete for classes which have loaded instances? > * Is it simply not worth it? > > The select-then-delete option doesn't seem particularly better than the > current situation when JDBC batch updates are enabled. The > disable-when-instances-are-loaded option looks like it would work, but only > for some very limited usecases (though it may work for the usecases we are > most interested in). > > > Thoughts? > I would go for the disable-when-instances-are-loaded option. And we should need some small support methods like: "isMassDeletable(Class c)" or "isMassDeletable(String hql), something to be able to query on the state to find possible answers to why my delete("from People f where f.location = 'Earth') takes a billion years instead of just a couple of seconds ;) Btw. how would joins fit into this scenario ? Is any/all HQL query deletable ? Can one find out upfront without issuing the delete ? /max ********************************************************************** Any personal or sensitive information contained in this email and attachments must be handled in accordance with the Victorian Information Privacy Act 2000, the Health Records Act 2001 or the Privacy Act 1988 (Commonwealth), as applicable. This email, including all attachments, is confidential. If you are not the intended recipient, you must not disclose, distribute, copy or use the information contained in this email or attachments. Any confidentiality or privilege is not waived or lost because this email has been sent to you in error. If you have received it in error, please let us know by reply email, delete it from your system and destroy any copies. ********************************************************************** ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel