Yeah, I'll probably end up doing something like that. Although the column name isn't always the same (data "owned" by a Customer can go Customer ->> Invoice ->> InvoiceLine ->> InvoiceLineSums ->> etc) plain SQL is probably the way to go here. I'll just write out them damn joins like our ancestors did.
Thanks, - hugi > On 29 May 2019, at 15:26, John Huss <johnth...@gmail.com> wrote: > > If the column name is the same in all the tables it would be pretty easy to > loop over all your entities and execute the same delete statement (via raw > SQLExec). Put all the the entities with that column in a Set and loop over > them, removing one when it succeeds until the set is empty. > > On Wed, May 29, 2019 at 7:35 AM Hugi Thordarson <h...@karlmenn.is> wrote: > >> Hi all. >> >> I have a pretty large model where every to-many relationship's delete rule >> is "Deny" (I like being explicit about the data I delete, especially since >> the DB in question still doesn't have well specified FKs). >> >> Almost every table in this DB is somehow related to a "Customer" table >> (sometimes through a chain of tables) that "owns" data. >> I'm now implementing an operation to nuke a Customer (as in "delete >> everything related to that customer")—but the data "owned" by the customer >> is hugely interrelated, even often creating circular relations. >> >> Do I have any nice options, given a set of DataObjects, to just tell >> Cayenne to nuke that darn data without any consideration for normal delete >> rules? As in "usually I wouldn't allow this and Ashwood is very angry at >> you—but since you really, really want it…". >> >> Note that the whole operation results in a consistent database (even if >> there are temporary in-memory inconsistencies due to the circular >> relationships) since the interrelated data is all deleted within the >> operation. >> >> Cheers, >> - Hugi