hi,

what have i done wrong?
i created a mapping with many many-to-many relations.
if i want to delete an object with many-to-many-relation i get the 
following exception:
java.lang.NullPointerException
        at org.exolab.castor.persist.ClassMolder.markDelete(ClassMolder.java:2400)
        at org.exolab.castor.persist.LockEngine.markDelete(LockEngine.java:548)
        at 
org.exolab.castor.persist.TransactionContext.delete(TransactionContext.java
:895)
        at org.exolab.castor.jdo.engine.DatabaseImpl.remove(DatabaseImpl.java:379)
        at 
org.exolab.castor.jdo.engine.DatabaseImpl.deletePersistent(DatabaseImpl.jav
a:390)
        at de.terminator.persistent.db.DbService.delete(DbService.java:208)
        at de.terminator.persistent.test.Test.test(Test.java:191)
        at de.terminator.persistent.test.Test.main(Test.java:52)

thank you for helping me.
jan


my mapping.xml:

<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                           "http://castor.exolab.org/mapping.dtd";>
<mapping>
  <class name="de.terminator.lg.LgTerminvorschlag"
         identity="terminid" key-generator="MAX">
    <map-to table="termin" xml="terminvorschlag" />
    <field name="terminid" type="java.lang.Integer" >
      <sql name="termin_id" type="integer"/>
      <xml name="termin_id" node="element"/>
    </field>
    <field name="besitzer" type="de.terminator.lg.LgPerson">
      <sql name="mitglied_id" />
      <xml name="besitzer" node="element" />
    </field>
    <field name="ort" type="string" >
      <sql name="ort" type="char" dirty="check" />
      <xml name="ort" node="element"/>
    </field>
    <field name="thema" type="string">
      <sql name="thema" type="char" dirty="check" />
      <xml name="thema" node="element"/>
    </field>
    <field name="zustand" type="integer" >
      <sql name="zustand" type="integer"/>
      <xml name="zustand" node="element"/>
    </field>
    <field name="zeitpunkt" type="date">
      <sql name="zeitpunkt" type="date"/>
      <xml name="zeitpunkt" node="element" />
    </field>
    <field name="laenge" type="integer" >
      <sql name="laenge" type="integer"/>
      <xml name="laenge" node="element"/>
    </field>

    <field name="mitglieder" type="de.terminator.lg.LgMitglied" lazy="true" 
required="false"
           collection="vector">
      <sql name="mitglied_id"
           many-table="terminvorschlag_mitglied" many-key="termin_id" />
      <xml name="mitglied_id" node="element" />
    </field>

    <field name="termine" type="de.terminator.lg.LgTermin" lazy="true"
           required="false"
           collection="vector">
      <sql many-key="to_parent_termin" />
      <xml name="termine" node="element" />
    </field>

  </class>

    <class name="de.terminator.lg.LgTermin"
         identity="terminid" key-generator="MAX">
    <map-to table="termin" xml="termin" />
    <field name="terminid" type="java.lang.Integer" >
      <sql name="termin_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="besitzer" type="de.terminator.lg.LgPerson">
      <sql name="mitglied_id" />
      <xml name="besitzer" node="element" />
    </field>
    <field name="zeitpunkt" type="date">
      <sql name="zeitpunkt" type="date"/>
      <xml node="text" />
    </field>
    <field name="laenge" type="integer" >
      <sql name="laenge" type="integer"/>
      <xml node="attribute"/>
    </field>

    <field name="parenttermin" type="de.terminator.lg.LgTerminvorschlag"
           required="true">
      <sql name="to_parent_termin"/>
      <xml name="parenttermin" node="element" />
    </field>

  </class>

  <class name="de.terminator.lg.LgMitglied"
         identity="mitgliedid" key-generator="MAX">
    <map-to table="mitglied" xml="mitglied" />
    <field name="mitgliedid" type="integer" >
      <sql name="mitglied_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="name" type="string" >
      <sql name="name" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="nickname" type="string" >
      <sql name="nickname" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="publickey" type="string" >
      <sql name="publickey" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="secretkey" type="string" >
      <sql name="secretkey" type="char" dirty="check" />
      <xml node="text"/>
    </field>

    <field name="gruppen" type="de.terminator.lg.LgGruppe" lazy="true" 
required="false"
           collection="vector">
      <sql name="gruppe_id"
           many-table="mitglied_gruppe" many-key="mitglied_id" />
      <xml name="mitglied_id" node="element" />
    </field>
    <field name="terminvorschlaege" 
type="de.terminator.lg.LgTerminvorschlag" lazy="true" required="false"
           collection="vector">
      <sql name="termin_id"
           many-table="terminvorschlag_mitglied" many-key="mitglied_id" />
      <xml name="termin_id" node="element" />
    </field>

  </class>

  <class name="de.terminator.lg.LgRaum"
         identity="mitgliedid" key-generator="MAX">
    <map-to table="mitglied" xml="mitglied" />
    <field name="mitgliedid" type="integer" >
      <sql name="mitglied_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="name" type="string" >
      <sql name="name" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="nickname" type="string" >
      <sql name="nickname" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="fassungsvermoegen" type="integer" >
      <sql name="raum_fassungsvermoegen" type="integer" dirty="check" />
      <xml node="attribute"/>
    </field>
    <field name="raumnummer" type="string" >
      <sql name="raum_nr" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="verfuegbar" type="integer" >
      <sql name="resource_verfuegbar" type="integer" dirty="check" />
      <xml node="attribute"/>
    </field>
    <field name="beschreibung" type="string" >
      <sql name="resource_beschreibung" type="char" dirty="check" />
      <xml node="text"/>
    </field>

    <field name="gruppen" type="de.terminator.lg.LgGruppe" lazy="true" 
required="false"
           collection="vector">
      <sql name="gruppe_id"
           many-table="mitglied_gruppe" many-key="mitglied_id" />
      <xml name="mitglied_id" node="element" />
    </field>

  </class>

  <class name="de.terminator.lg.LgGeraet"
         identity="mitgliedid" key-generator="MAX">
    <map-to table="mitglied" xml="mitglied" />
    <field name="mitgliedid" type="integer" >
      <sql name="mitglied_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="name" type="string" >
      <sql name="name" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="nickname" type="string" >
      <sql name="nickname" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="verfuegbar" type="integer" >
      <sql name="resource_verfuegbar" type="integer" dirty="check" />
      <xml node="attribute"/>
    </field>
    <field name="beschreibung" type="string" >
      <sql name="resource_beschreibung" type="char" dirty="check" />
      <xml node="text"/>
    </field>

    <field name="gruppen" type="de.terminator.lg.LgGruppe" lazy="true" 
required="false"
           collection="vector">
      <sql name="gruppe_id"
           many-table="mitglied_gruppe" many-key="mitglied_id" />
      <xml name="mitglied_id" node="element" />
    </field>

  </class>

  <class name="de.terminator.lg.LgPerson"
         identity="mitgliedid" key-generator="MAX">
    <map-to table="mitglied" xml="mitglied" />
    <field name="mitgliedid" type="integer" >
      <sql name="mitglied_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="name" type="string" >
      <sql name="name" type="char" dirty="check" />
      <xml node="text"/>
    </field>
    <field name="nickname" type="string" >
      <sql name="nickname" type="char" dirty="check" />
      <xml node="text"/>
    </field>

    <field name="gruppen" type="de.terminator.lg.LgGruppe" lazy="true" 
required="false"
           collection="vector">
      <sql name="gruppe_id"
           many-table="mitglied_gruppe" many-key="mitglied_id" />
      <xml name="mitglied_id" node="element" />
    </field>

    <field name="rolle" type="integer" >
      <sql name="person_rolle" type="integer" dirty="check" />
      <xml node="attribute"/>
    </field>
    <field name="adresse" type="string" >
      <sql name="person_adresse" type="char" dirty="check" />
      <xml node="text"/>
    </field>
  </class>

  <class name="de.terminator.lg.LgGruppe"
         identity="gruppeid" key-generator="MAX">
    <map-to table="gruppe" xml="gruppe" />
    <field name="gruppeid" type="java.lang.Integer" >
      <sql name="gruppe_id" type="integer"/>
      <xml node="attribute"/>
    </field>
    <field name="name" type="string" >
      <sql name="name" type="char" dirty="check" />
      <xml node="text"/>
    </field>

    <field name="mitglieder" type="de.terminator.lg.LgPerson" 
required="false"
           collection="vector">
      <sql name="mitglied_id"
           many-table="mitglied_gruppe" many-key="gruppe_id" />
      <xml name="mitglied_id" node="element" />
    </field>

  </class>

</mapping>

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to