Hi Tomas,

Please set
auto-update="false" and auto-delete="false"
and try again.

Hope that helps...
cheers,
Thomas

> -----Original Message-----
> From: Tomas Klubal [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, February 20, 2003 3:31 PM
> To: [EMAIL PROTECTED]
> Subject: JDO - saving objects duplicity
> 
> 
> Hello,
> 
> 1) I'm trying JDO and I receiving errors.  Exactly, sometimes 
> (50%) when I'm saving objects  are objects in collection saved twice.
> I'm using ojb 0.99 built from source connected to mysql DB.
> I have two classes Person and Address. One Person can have 
> 0..n Addresses, so I'have collection adresy in Person object 
> ( private Vector adresy;). I'have auto-update = true
>  When I save object Person with PB  everything runs OK, I can 
> see one new Person in table "Person" and new Addresses  in 
> table "Address" (if I'm saving two then there are two rows).
> 
> When I use JDO, it saves one Person (it's OK),  but at 50% of 
> runs there are more rows than Addresses to save (Some rows 
> are duplicated, identical).
> 
> Log from JDO looks like this (one Person, two Addresses, seems OK):
> 
> *********************************
> [JDO] DEBUG: OjbStoreManager.flush: com.uvt.Address{303}, P_NEW
> [JDO] DEBUG: OjbStoreManager.insert
> [JDO] DEBUG: OjbStoreManager.flush: com.uvt.Person{282}, P_NEW
> [JDO] DEBUG: OjbStoreManager.insert
> [JDO] DEBUG: OjbStoreManager.flush: com.uvt.Address{302}, P_NEW
> [JDO] DEBUG: OjbStoreManager.insert
> [JDO] DEBUG: OjbStoreManager.flush: end, err=false
> [JDO] DEBUG: OjbStoreConnector.commit
> *********************************
> but then there are identical rows (sometimes only one Address 
> is duplicated, sometimes both).
> 
> My code looks like this:
> 
> ********************************
> public boolean savePerson() {
>         Person person = null;
>         Address adresa = null;
>         Address adresa2 = null;
>         
>         PersistenceManager manager = null;
>         PersistenceManagerFactory factory = null;
>         
>         person = new Person();
>         person.setJmeno("Thomas");
>         person.setPrijmeni("Klubal");
>         
>         adresa2 = new Address();
>         adresa2.setUlice("Greeen st. 256");
>         adresa2.setMesto("Prague");
>         adresa2.setPsc("165 00");
>         person.addAddress(adresa2);
>         
>         adresa = new Address();
>         adresa.setUlice("Red st. 45");
>         adresa.setMesto("Paris");
>         adresa.setPsc("895422");
>         person.addAddress(adresa);
>         
>         try {
>             factory = new OjbStorePMF();
>             manager = factory.getPersistenceManager();
>             Transaction tx = null;
>             tx = manager.currentTransaction();
>             tx.begin();
>             manager.makePersistent(person);
>             tx.commit();
>             
>             System.out.println("\nPerson saved. " + 
> person.toString());
>             manager.close();
>         }
>         catch (PersistenceBrokerException ex) {
>             System.out.println("Error: " + ex.getMessage());
>             return false;
>         }
>         return true;
>     }
> *************************************************************
> this is my repiository_user.xml:
> 
> <class-descriptor class="com.uvt.Address" table="Address">
>       <field-descriptor id="1" name="oid" column="oid" 
> jdbc-type="INTEGER" primarykey="true" 
> autoincrement="true"></field-descriptor>
>       <field-descriptor id="2" name="oidPerson" 
> column="oidPerson" jdbc-type="INTEGER"></field-descriptor>    
>       <field-descriptor id="3" name="ulice" column="ulice" 
> jdbc-type="VARCHAR"></field-descriptor>
>       <field-descriptor id="4" name="mesto" column="mesto" 
> jdbc-type="VARCHAR"></field-descriptor>
>       <field-descriptor id="5" name="psc" column="psc" 
> jdbc-type="VARCHAR"></field-descriptor>
> </class-descriptor>
> 
> <class-descriptor class="com.uvt.Person" table="Person">
>       <field-descriptor id="1" name="oid" column="oid" 
> jdbc-type="INTEGER" primarykey="true" 
> autoincrement="true"></field-descriptor>
>       <field-descriptor id="2" name="jmeno" column="jmeno" 
> jdbc-type="VARCHAR"></field-descriptor>
>       <field-descriptor id="3" name="prijmeni" 
> column="prijmeni" jdbc-type="VARCHAR"></field-descriptor>
>       <collection-descriptor name="adresy" 
> element-class-ref="com.uvt.Address" orderby="oid" sort="DESC" 
> auto-retrieve="true" auto-update="true" auto-delete="true">
>             <inverse-foreignkey field-id-ref="2"></inverse-foreignkey>
>       </collection-descriptor>
>  </class-descriptor>
> 
> Please dont you know whats wrong?
> 
> 
> Tomas Klubal :-)
> E-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to