Fabian,

are you still having problems with this, or can I consider this to be resolved ?

Werner

On Mon, 18 Oct 2004 10:10:01 +0200, Fabian Wolff wrote:

>
>Hi,
>
>I hope you can me solving a problem with castor.:
>I have 2 Classes A and B where B depends on A. If I insert a new Object 
>A the first time(incl. depended Object B) everything is alright. The 
>Object seems to be persistent, because it is in the MySQL-Database.
>But if I want to insert a second Object A, I always get an Exception:
>org.exolab.castor.jdo.DuplicateIdentityException: Duplicate identity 
>found for object of type Abhaengig with identity 28: an object with the 
>same identity already exists in persistent storage
>
>But the new Object, which has to be inserted has the Value 29. The 
>previous object (which I stored the first time) has the value 28.
>It seems to me, that castor wants to store this object again, incl. the 
>new object. Does it mean, that the first object is already in the same 
>transaction  and transient? How could it be, that the first object is 
>persistent and transient? Please can you tell me what I am doing wrong?
>
>
>a part of my Java-Code:
>
>
>    SQLAccess(){
>        sema = new Semaphore(1);
>        jdo = new JDO();
>        System.out.println("Database-Name: test");
>        jdo.setDatabaseName( "test" );
>        System.out.println("Config-File: database.xml");
>        jdo.setConfiguration( "database.xml" );
>        jdo.setClassLoader(getClass().getClassLoader());
>   
>        try{
>            //Obtain a new database
>            System.out.println("trying to open database");
>            db = jdo.getDatabase();
>            System.out.println("Database opened");
>...
>}
>
>
>
>boolean setBenutzer(Benutzer benutzer){
>
>    try {
>        sema.p();
>        db.begin();
>        String query="select o from Benutzer o WHERE 
>regid="+benutzer.getRegid();
>        System.out.println("Begin transaction");
>        Query oql;
>        QueryResults results=null;
>        System.out.print("OQL> ");
>        System.out.println("\""+query+"\"");
>          oql=db.getOQLQuery(query);
>          System.out.println("execute");
>          results=oql.execute();
>          System.out.println("done");
>          if (!results.hasMore()) {
>              System.out.println("Create Benutzer");
>              db.create(benutzer);
>              System.out.println("Created");
>              db.commit();
>              sema.v();
>          }
>        return true;
>.....
>}
>
>/*
>boolean setBenutzer(Benutzer benutzer){
>    try {
>        sema.p();
>        db.begin();
>
>        System.out.println("Create Benutzer");
>        db.create(benutzer);
>        System.out.println("Created");
>        db.commit();
>        sema.v();
>        return true;
>
>    }
>.....
>}
>*/
>
>I just call 2 times setBenutzer with different Benutzer Objects and get 
>the Exception above. I tried it with both setBenutzer functions.
>If I search for Benutzer objects by making a select, the new inserted 
>Benutzer Object also returns.
>(If I don't use the depend-relation and insert an Benutzer-Object, no error 
>occures.)
>
>
>a part of my mapping file:
>
><class name="Benutzer" identity="regid">
><cache-type type="none"/>
><map-to table="benutzer" xml="Benutzer"/>
><field name="regid" type="integer">
><sql name="regid" type="integer"/>
><bind-xml name="regid" type="integer" node="attribute"/>
></field>
><field name="name" type="java.lang.String">
><sql name="name" type="varchar"/>
><bind-xml name="name" type="java.lang.String" node="element"/>
></field>
>
><!--- 1:n Relation mit Tabelle Abhaengig (Abhaengig depends on Benutzer)-->
><field name="abhaengig" type="Abhaengig" required="true" 
>collection="vector">
><sql many-key="userid"/>
><bind-xml name="abhaengig" node="element"/>
></field>
>
>......
>
></class>
>
>
><class name="Abhaengig" identity="regid" depends="Benutzer">
><cache-type type="none"/>
><map-to table="abhaengig" xml="Abhaengig"/>
>
><field name="regid" type="integer">
><sql name="regid" type="integer"/>
><bind-xml node="attribute"/>
></field>
>
><field name="benutzer" type="Benutzer">
><sql name="userid"/>
><bind-xml name="benutzer" node="element" reference="true"/>
></field>
>
>
><field name="komisch" type="java.lang.String">
><sql name="komisch" type="varchar"/>
><bind-xml name="komisch" type="java.lang.String" node="element"/>
></field>
></class>
>
>
>I hope you can help me solving my problem and tell me what I am doing wrong.
>
>Thank you in advance
>Fabian Wolff
>
>
>
>----------------------------------------------------------- 
>If you wish to unsubscribe from this mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
>        unsubscribe castor-user
>



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

Reply via email to