You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-user@db.apache.org by Christiaan des Bouvrie <c....@CostEngineering.eu> on 2007/07/19 12:42:46 UTC

Delete by query

Hi,
I have a question regarding delete by query. In the JDO 2.0 spec 14.8 it
says:

"...These methods delete the instances of affected classes that pass the
filter, and all dependent

instances...." To me it is not really clear what should be done in case
such instance contains a List attribute. 

 

Suppose I have the following class structure:



Book {
     List<Page> pages = new ArrayList<Page>(); 

     public void addPage(Page page) {
             pages.add(page);
     }
}

 

Page {
} 

 

Three tables will be created, one of them is the relation table
Book_Pages. When I perform:
pm.currentTransaction().begin();
Query q = pm.newQuery(Book.class);
q.deletePersistentAll();
pm.currentTransaction().commit();



When deleting the book object, he rows in the relation table
corresponding to this book should be deleted as well. Should I specify
additional information in the .jdo or .orm to make this happen (eg.
delete-action="cascade" for the relation table), or should this be done
implicitly without specifying any additional info?

 

Kind regards,

Christiaan

 


Re: Delete by query

Posted by David Ezzio <de...@bea.com>.
Hi Christiaan,

The entries in the relationship table (BOOK_PAGE) should be deleted when 
the BOOK is deleted, but the entries in the PAGE table would remain 
unless you indicated that they were dependent.  The only purpose of the 
BOOK_PAGE table is to model the relationship and the relationship does 
not exist if the BOOK is deleted.

Does that help?

David



Christiaan des Bouvrie wrote:
> Hi,
> I have a question regarding delete by query. In the JDO 2.0 spec 14.8 it
> says:
> 
> "...These methods delete the instances of affected classes that pass the
> filter, and all dependent
> 
> instances...." To me it is not really clear what should be done in case
> such instance contains a List attribute. 
> 
>  
> 
> Suppose I have the following class structure:
> 
> 
> 
> Book {
>      List<Page> pages = new ArrayList<Page>(); 
> 
>      public void addPage(Page page) {
>              pages.add(page);
>      }
> }
> 
>  
> 
> Page {
> } 
> 
>  
> 
> Three tables will be created, one of them is the relation table
> Book_Pages. When I perform:
> pm.currentTransaction().begin();
> Query q = pm.newQuery(Book.class);
> q.deletePersistentAll();
> pm.currentTransaction().commit();
> 
> 
> 
> When deleting the book object, he rows in the relation table
> corresponding to this book should be deleted as well. Should I specify
> additional information in the .jdo or .orm to make this happen (eg.
> delete-action="cascade" for the relation table), or should this be done
> implicitly without specifying any additional info?
> 
>  
> 
> Kind regards,
> 
> Christiaan
> 
>  
> 
> 


Notice:  This email message, together with any attachments, may contain information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,  copyrighted  and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.