db-ojb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zhenwei LI" <li_...@hotmail.com>
Subject Problem with update in 1 to n relationship.
Date Mon, 06 Oct 2003 07:40:02 GMT

Hi, I am working with OJB on a purchase order 1 to n object on mysql 
database.

When update the old PO with the new PO (same ID) with some lineitems 
deleted, it does not delete the Items in the database.


It works correctly when the new PO with addition lineitems, it adds them to 
the db. but not vice versa.


following is my repository_user.xml and my update code.

   <class-descriptor
   	  class="src.SIP.PO"
   	  table="SHEET"
   >
      <field-descriptor
         name="oid"
         column="ID"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="status"
         column="STATUS"
         jdbc-type="VARCHAR"
      />
      <field-descriptor
         name="CreationDateTime"
         column="CreatedDate"
         jdbc-type="VARCHAR"
      />
      <collection-descriptor
         name="Items"
         
collection-class="org.apache.ojb.broker.util.collections.RemovalAwareCollection"
         element-class-ref="src.SIP.POItem"
         auto-delete="true"
         auto-retrieve="true"
         auto-update="true"
      >
         <inverse-foreignkey field-ref="Invoice_id"/>
      </collection-descriptor>
   </class-descriptor>

   <class-descriptor
      class="src.SIP.POItem"
      table="SHEETDETAIL"
   >
      <field-descriptor
         name="Invoice_id"
         column="SheetID"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="Item_id"
         column="BookID"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="Price"
         column="Price"
         jdbc-type="FLOAT"
      />
      <field-descriptor
         name="Sum"
         column="Sum"
         jdbc-type="FLOAT"
      />
      <field-descriptor
         name="Quantity"
         column="Quantity"
         jdbc-type="INTEGER"
      />

   </class-descriptor>

static public void UpdatePO1(String id, PO newpo) {

Implementation odmg = OJB.getInstance();
Database db = odmg.newDatabase();

try {
db.open("default", Database.OPEN_READ_WRITE);
} catch (ODMGException ex) {
ex.printStackTrace();
}

String oqlQuery = "select upd from " + PO.class.getName() + " where oid = " 
+ id;
TransactionImpl tx = (TransactionImpl) odmg.newTransaction();
try{

tx.begin();

PersistenceBroker pb = tx.getBroker();

PO oldpo = getPO(id);

tx.lock(oldpo, Transaction.WRITE);

BeanUtils.copyProperties(oldpo, newpo);

tx.commit();
} catch (Throwable t) {

t.printStackTrace();
}
}

_________________________________________________________________
Instant message in style with MSN Messenger 6.0. Download it now FREE!  
http://msnmessenger-download.com


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Mime
View raw message