Hi,

I am using two tables Patient and Rechnung (1-->N see Repository.xml) 
The collection-class is RechnungCollection and implements the Interface 
ManageableCollection

I have written the following code:
    //open database
    try {

      // 1. open a transaction
      tx = odmg.newTransaction();
      tx.begin();

      // 2. get an OQLQuery object from the ODMG facade
      OQLQuery query = odmg.newOQLQuery();

      // 3. set the OQL select statement
      query.create( "select all from " + Patient.class.getName() );

      // 4. perform the query and store the result in a persistent Collection
      DList allPatienten = ( DList ) query.execute();

      tx.commit();

this leads to the following error / exception:

[org.apache.ojb.odmg.TransactionImpl] ERROR: Locking obj 
ziab.massage.dvo.Patient@4a6cbf with lock mode 1 failed
ziab.massage.dvo.RechnungCollection
org.odmg.ClassNotPersistenceCapableException: 
ziab.massage.dvo.RechnungCollection
        at 
org.apache.ojb.odmg.ObjectEnvelope.manage(ObjectEnvelope.java:149)
        at 
org.apache.ojb.odmg.ObjectEnvelope.<init>(ObjectEnvelope.java:131)
        at 
org.apache.ojb.odmg.TransactionImpl.register(TransactionImpl.java:672)
        at 
org.apache.ojb.odmg.TransactionImpl.lock(TransactionImpl.java:264)
        at 
org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(OQLQueryImpl.java:304)
        at 
org.apache.ojb.odmg.oql.OQLQueryImpl.execute(OQLQueryImpl.java:278)
        at 
ziab.massage.po.odmg.PatientenPOODMGImpl.suchePatient(PatientenPOODMGImpl.java:229)
        at ziab.massage.gl.PatientenGL.suchePatient(PatientenGL.java:50)
        at ziab.massage.gl.PatientenGL.main(PatientenGL.java:143)
(odmg.PatientenPOODMGImpl            255 ) 
ziab.massage.dvo.RechnungCollection
org.odmg.LockNotGrantedException: ziab.massage.dvo.RechnungCollection
        at 
org.apache.ojb.odmg.TransactionImpl.lock(TransactionImpl.java:271)
        at 
org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(OQLQueryImpl.java:304)
        at 
org.apache.ojb.odmg.oql.OQLQueryImpl.execute(OQLQueryImpl.java:278)
        at 
ziab.massage.po.odmg.PatientenPOODMGImpl.suchePatient(PatientenPOODMGImpl.java:229)
        at ziab.massage.gl.PatientenGL.suchePatient(PatientenGL.java:50)
        at ziab.massage.gl.PatientenGL.main(PatientenGL.java:143)
[org.apache.ojb.odmg.TransactionImpl] INFO: Abort transaction was called 
on tx org.apache.ojb.odmg.TransactionImpl@3d7848, associated PB was 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl@23e5d1



Do you have any idea what the reason for this could be? Any help is highly 
appreciated.

Yours Guido



<!-- Definitions for ziab.massage.dvo.Patient -->
   <class-descriptor
          class="ziab.massage.dvo.Patient"
          table="PATIENTEN"
   >
      <field-descriptor id="1"
         name="id"
         column="PATIENTEN_ID"
         jdbc-type="INTEGER"
         primarykey="true"
         autoincrement="true"
      />
      <field-descriptor id="2"
         name="nachname"
         column="NACHNAME"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="3"
         name="vorname"
         column="VORNAME"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="4"
         name="strasse"
         column="STRASSE"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="5"
         name="plz"
         column="PLZ"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="6"
         name="ort"
         column="ORT"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="7"
         name="vers_art"
         column="VERS_ART"
         jdbc-type="INTEGER"
      />

        <collection-descriptor
     name="rechnungen"
         collection-class="ziab.massage.dvo.RechnungCollection"
     element-class-ref="ziab.massage.dvo.Rechnung"
     auto-retrieve="true"
     orderby="id"
     sort="DESC">
     <inverse-foreignkey field-id-ref="8"/>
        </collection-descriptor> 

   </class-descriptor>




<!-- Definitions for ziab.massage.dvo.Rechnung 
-->

   <class-descriptor
          class="ziab.massage.dvo.Rechnung"
          table="RECHNUNG"
   >
 
      <field-descriptor id="1"
         name="id"
         column="RECHNUNG_ID"
         jdbc-type="INTEGER"
         primarykey="true"
         autoincrement="true"
      />
      <field-descriptor id="2"
         name="rechnungNr"
         column="RE_NR"
         jdbc-type="VARCHAR"
      />
      <field-descriptor id="3"
         name="rechnungDatum"
         column="RECHNUNG_DATUM"
         jdbc-type="DATE"
      />
      <field-descriptor id="4"
         name="rezeptDatum"
         column="REZEPT_DATUM"
         jdbc-type="DATE"
      />
      <field-descriptor id="5"
         name="rechnungBetrag"
         column="RECHNUNG_BETRAG"
         jdbc-type="DOUBLE"
      />
      <field-descriptor id="6"
         name="behandlungVon"
         column="BEHANDLUNG_VON"
         jdbc-type="DATE"
      />
      <field-descriptor id="7"
         name="behandlungBis"
         column="BEHANDLUNG_BIS"
         jdbc-type="DATE"
      />
      <field-descriptor id="8"
         name="fkPatientId"
         column="PATIENTEN_ID"
         jdbc-type="INTEGER"
      />

        <reference-descriptor
         name="patient"
         class-ref="ziab.massage.dvo.Patient">
         <foreignkey field-id-ref="8"/>
    </reference-descriptor> 
 
 </class-descriptor>


Reply via email to