Hi, I am getting the following error when I try to remove objects from an 
ArrayList: 

org.exolab.castor.jdo.TransactionAbortedException:
Nested error: java.lang.IllegalStateException: Object deleted waiting
for lock?????????: Object deleted waiting for lock?????????
        at 
org.castor.persist.AbstractTransactionContext.prepare(AbstractTransactionContext.java:1227)
        at 
org.exolab.castor.jdo.engine.LocalDatabaseImpl.commit(LocalDatabaseImpl.java:161)
        at 
com.codemagi.servlets.content.PageController.dispatchSetTeam(PageController.java:1026)

One
of my mapped objects, Section, contains an ArrayList of Users. When I
try to remove Users from that list and commit, I get the error. Here is
the code that causes the error to happen: 

Section section = (Section)db.load(Section.class, sectionId);

Iterator i = removeIds.iterator();
while (i.hasNext()) {
    Integer memberId = convertInteger( (String)i.next() );
    IUser memberToRemove = (IUser)db.load(USER_CLASS, memberId);

    section.removeUser(memberToRemove);   //calls ArrayList.remove(Object)
}

db.commit();

If
I log the contents of the List in section, I can see that the User
objects are getting properly removed. The actual error occurs when
db.commit() is called. 

What causes this error to be thrown?
How does one properly remove objects from a list? Note that we don't
actually want to delete the User, we just want to remove it from the
Section. 

Here is the mapping for Section showing a many-many relationship to User (the 
database is MySQL): 

  <class name="com.codemagi.servlets.content.model.Section" identity="id" 
key-generator="IDENTITY">
    <description>section hierarchy for navigation and breadcrumbs</description>
    <map-to table="nav_section" />
    <field name="id" type="integer">
      <sql name="section_id" type="integer"/>
    </field>
    <field name="name" type="string">
      <sql name="section_name" type="varchar"/>
    </field>
    <field name="teamMembers" type="org.openeco.login.model.User" 
collection="arraylist">
      <sql name="user_id" many-table="nav_section_user_xref" 
many-key="section_id" />
    </field>
  </class>

Thanks,
August 

PS: Check out OpenEco. It is a full web application framework that uses Castor 
JDO-XML as its core persistence layer: http://openeco.dev.java.net


      
____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to