Well this is a Debugging message (I=m saving one Person with two addresses): This save 
wasnt ok, one of the addresses has oidPerson = 0. This address oid is 583. Address 
with oid 582 has right oidPerson = 562.

I also add class definitions of class Person and Address (classes are in package 
com.uvt) and XML metadata file uvt.jdo.
There is no stacktrace.
Thanks Tomas Klubal


******************************************************************

[JDO] DEBUG: OjbStoreConnector.begin: connectionReadyForRelease=false
[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO: Create 
PersistenceBroker instance pool, pool configuration was {whenExhaustedAction=0, 
maxIdle=-1, maxActive=100, maxWait=2000, removeAbandoned=false, 
numTestsPerEvictionRun=10, testWhileIdle=false, minEvictableIdleTimeMillis=1000000, 
testOnReturn=false, logAbandoned=false, removeAbandonedTimeout=300, 
timeBetweenEvictionRunsMillis=-1, testOnBorrow=false}
[org.apache.ojb.broker.metadata.RepositoryPersistor] INFO: OJB Descriptor Repository: 
file:/C:/java/enhancer/repository.xml
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG: startDoc
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG:      accept-locks: true
[org.apache.ojb.broker.metadata.RepositoryXmlHandler] DEBUG: endDoc
[org.apache.ojb.broker.metadata.RepositoryPersistor] INFO: Read repository from file 
took 761 ms
[org.apache.ojb.broker.metadata.RepositoryPersistor] INFO: OJB Descriptor Repository: 
file:/C:/java/enhancer/repository.xml
[org.apache.ojb.broker.metadata.RepositoryPersistor] INFO: Read connection repository 
from file took 110 ms
[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO: Set default 
PBKey: org.apache.ojb.broker.PBKey: repository=default, user=brokilon, password=*****
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO: Create new 
connection pool:org.apache.ojb.broker.metadata.JdbcConnectionDescriptor@401369[
  jcd-alias=default
  default-connection=true
  dbms=MySQL
  jdbc-level=2.0
  driver=org.gjt.mm.mysql.Driver
  protocol=jdbc
  sub-protocol=mysql
  db-alias=//jalovice.czu.cz:3306/ojb
  user=brokilon
  password=*****
  eager-release=false
  ConnectionPoolDescriptor={whenExhaustedAction=0, maxIdle=-1, maxActive=21, 
maxWait=5000, removeAbandoned=false, numTestsPerEvictionRun=10, testWhileIdle=false, 
minEvictableIdleTimeMillis=600000, testOnReturn=false, logAbandoned=false, 
removeAbandonedTimeout=300, timeBetweenEvictionRunsMillis=-1, testOnBorrow=true}
  batchMode=false
  sequenceDescriptor=org.apache.ojb.broker.metadata.SequenceDescriptor@14d7745[
     sequenceManagerClass=class 
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl
     Properties={grabSize=20}
]
]
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: SELECT 
A0.GRAB_SIZE,A0.MAX_KEY,A0.FIELDNAME,A0.TABLENAME FROM OJB_HL_SEQ A0 WHERE 
(A0.TABLENAME LIKE  ? ) AND A0.FIELDNAME LIKE  ?
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: SELECT 
GRAB_SIZE,MAX_KEY,FIELDNAME,TABLENAME FROM OJB_HL_SEQ WHERE TABLENAME = ?  AND 
FIELDNAME = ?
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: UPDATE 
OJB_HL_SEQ SET MAX_KEY=?, GRAB_SIZE=? WHERE TABLENAME = ?  AND FIELDNAME = ?
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: SELECT 
A0.GRAB_SIZE,A0.MAX_KEY,A0.FIELDNAME,A0.TABLENAME FROM OJB_HL_SEQ A0 WHERE 
(A0.TABLENAME LIKE  ? ) AND A0.FIELDNAME LIKE  ?
[JDO] DEBUG: OjbStoreManager.flush: com.uvt.Address{583}, P_NEW
[JDO] DEBUG: OjbStoreManager.insert
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: INSERT 
INTO Address (oid,oidPerson,ulice,mesto,psc) VALUES ( ?, ?, ?, ?, ? )
[JDO] DEBUG: OjbStoreManager.flush: com.uvt.Person{562}, P_NEW
[JDO] DEBUG: OjbStoreManager.insert
[org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG: SQL: INSERT 
INTO Person (oid,jmeno,prijmeni) VALUES ( ?, ?, ? )
[JDO] DEBUG: OjbStoreManager.flush: com.uvt.Address{582}, P_NEW
[JDO] DEBUG: OjbStoreManager.insert
[JDO] DEBUG: OjbStoreManager.flush: end, err=false
[JDO] DEBUG: OjbStoreConnector.commit
Person saved. Person: Klubal Thomas

*********************************************************************************
This is a Person Class:

public class Person {
    private int oid;
    private String jmeno;
    private String prijmeni;
    private Vector adresy;

    public Person() {
        adresy = new Vector();
    }

    public boolean addAddress(Address aAddress) {
       return adresy.add(aAddress);
    }

    public Object removeAddress(int index) {
      return adresy.remove(index);
    }

    public int getOid() {
      return oid;
    }

    public void setOid(int aOid) {
      oid = aOid;
    }

    public String getJmeno() {
        return prijmeni;
    }

    public String getPrijmeni() {
        return jmeno;
    }

    public void setJmeno(String aJmeno) {
      jmeno = aJmeno;
    }

    public void setPrijmeni(String aPrijmeni) {
      prijmeni = aPrijmeni;
    }

    public String toString() {
        return "Person: " + getJmeno() + " " + getPrijmeni();
    }

}
**********************************************************
This is a Address Class:

public class Address {
    private int oid;
    private int oidPerson;
    private String ulice;
    private String mesto;
    private String psc;

    public Address() {
    }

    public int getOid() {
      return oid;
    }

    public int getOidPerson() {
      return oidPerson;
    }

    public void setOidPerson(int aOidPerson) {
      oidPerson = aOidPerson;
    }

    public String getUlice() {
      return ulice;
    }

    public String getMesto() {
      return mesto;
    }

    public String getPsc() {
      return psc;
    }

    public void setOid(int aOid) {
      oid = aOid;
    }

    public void setUlice(String aUlice) {
      ulice = aUlice;
    }

    public void setMesto(String aMesto) {
      mesto = aMesto;
    }

    public void setPsc(String aPsc) {
      psc = aPsc;
    }

    public String toString() {
        return "Address: " + getUlice() + " " + getMesto() +  " " + getPsc();
    }

}
**********************************************************
And this is jdo file for enhancing:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jdo SYSTEM "file://classes/org/apache/ojb/jdo.dtd">
<jdo>

 <!--extension vendor-name="ojb" key="dbplatform" value="hsqldb"/>
 <extension vendor-name="ojb" key="dbjdbc-level" value="2.0"/>
 <extension vendor-name="ojb" key="dbdriver" value="org.hsqldb.jdbcDriver"/>
 <extension vendor-name="ojb" key="dbprotocol" value="jdbc"/>
 <extension vendor-name="ojb" key="dbsubprotocol" value="hsqldb"/>
 <extension vendor-name="ojb" key="dbalias" value="../OJB"/>
 <extension vendor-name="ojb" key="dbusername" value="sa"/>
 <extension vendor-name="ojb" key="dbpassword" value=""/-->

 <package name="com.uvt">

  <class name="Person">
  <extension vendor-name="ojb" key="table" value="Person"/>

  <field name="oid">
    <extension vendor-name="ojb" key="column" value="oid"/>
    <extension vendor-name="ojb" key="jdbc-type" value="INTEGER"/>
   </field>
   <field name="jmeno">
    <extension vendor-name="ojb" key="column" value="jmeno"/>
   </field>
   <field name="prijmeni">
    <extension vendor-name="ojb" key="column" value="prijmeni"/>
   </field>
 <field name="adresy">
 <collection element-type="Address">
    <extension vendor-name="ojb" key="inverse-foreignkey" value="oidPerson"/>
  </collection>
</field>
  </class>


<class name="Address">
  <extension vendor-name="ojb" key="table" value="Address"/>
  <field name="oid">
    <extension vendor-name="ojb" key="column" value="oid"/>
    <extension vendor-name="ojb" key="jdbc-type" value="INTEGER"/>
   </field>
  <field name="oidPerson">
    <extension vendor-name="ojb" key="column" value="oidPerson"/>
    <extension vendor-name="ojb" key="jdbc-type" value="INTEGER"/>
   </field>
   <field name="ulice">
    <extension vendor-name="ojb" key="column" value="ulice"/>
   </field>
   <field name="mesto">
    <extension vendor-name="ojb" key="column" value="mesto"/>
   </field>
   <field name="psc">
    <extension vendor-name="ojb" key="column" value="psc"/>
   </field>
  </class>
 </package>
</jdo>
**************************************************************************


*********** REPLY SEPARATOR  ***********

On 20.2.2003 at 21:28 Thomas Mahler wrote:

>Hi again Tomas,
>
>Tomas Klubal wrote:
>> Sorry,
>> there is not duplicity now, 2 adresses to save = 2 rows (it's ok)
>
>That's what I expected.
>
>> but there is sometimes (50% too) oidPerson (foreign key to person) = 0
>in address table.
>
>Mhh, that' strange...
>Unfortunately we currently don't have a JDO testsuite.
>So I can't tell what could be wrong without having more details.
>could you please post the jdo debug messages for a case where things go
>wrong. Seeing a stacktrace (if any) would also be good.
>
>>
>> *********** REPLY SEPARATOR  ***********
>>
>> On 20.2.2003 at 16:52 Mahler Thomas wrote:
>>
>>
>>>Hi Tomas,
>>>
>>>Please set
>>>auto-update="false" and auto-delete="false"
>>>and try again.
>>
>>
>>
>> Does it mean that jdo support implicitly cascading?
>>
>
>Yes. ODMG and JDO register depended objects (like collection elements)
>to the current transaction. On transaction commit they both perform
>persistence operations for all registered objects.
>
>Thus setting auto-update=true results in double inserts. (This is
>meantioned somewhere in tutorial3.html)
>
>best regards from Essen to Prague,
>Thomas
>
>>
>>
>>
>>
>>>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]
>>
>>
>>
>> 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]


Tomas Klubal :-)
E-mail: [EMAIL PROTECTED]


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

Reply via email to