I don't know if this can help you, but I made another test with an OQL
pass-thru, and I get the new object before the commit phase.

Is there something special to do to enable the OQL query to see the objects
created inside the current transaction?

Sylvie.

___________________
CREDI RA
Sylvie Palluel

[EMAIL PROTECTED]
___________________


> -----Message d'origine-----
> De�: SYLVIE PALLUEL [mailto:[EMAIL PROTECTED]
> Envoy�: mardi 9 novembre 2004 15:26
> ��: [EMAIL PROTECTED]
> Objet�: Re: [castor-dev] [jdo] Reading, in the same transaction, a data
> just created (reading via oql query)
> 
> Hello Patrick,
> 
> As I answered to Marco, if my example is simple, the real code is not so
> simple!
> 
> The program - which is running alone - tries to upgrade the content of a
> database which contents application parameters (a new version of the
> application will bring many new objects in different "tables", and
> modification in some existing objects).
> 
> The process may be long, and in fact when we need to read the object, we
> have not anymore the object's reference: we have only keywords to retrieve
> it from database by an oql query.
> 
> If, in the example, I use directly jdbc, and not jdo, the query retrieves
> the new object.
> 
> You said OQL doesn't go through the cache: that what I thought first, but
> if
> I try the same thing while modifying an existing object, my oql query
> retrieves the modified object!
> 
> 
> db.begin();
> log.info("Object read via oql ");
> ArrayList lesDossiers = RequetesJdoAssure.getLesDossiers("GALO", "%", "%",
> "%", db);
> for (Iterator iter = lesDossiers.iterator(); iter.hasNext();) {
>       Dossier element = (Dossier) iter.next();
>       log.info(" Nom = " + element.getNomPatronymique() + " - Pr�nom = " +
> element.getPrenom());
>       log.info(" Modif du pr�nom");
>       // The object is modified
>       element.setPrenom("TOTO");
> }
> 
> 
> log.info(" Object is read again via oql ");
> lesDossiers = RequetesJdoAssure.getLesDossiers("GALO", "%", "%", "%", db);
> for (Iterator iter = lesDossiers.iterator(); iter.hasNext();) {
>               Dossier elementModifie = (Dossier) iter.next();
>               log.info(" Nom Apres modif = " +
> elementModifie.getNomPatronymique() + " - Pr�nom apr�s modif = " +
> elementModifie.getPrenom());
> }
> 
> 
> So I'm little lost !
> 
> 
> Sylvie.
> 
> ___________________
> CREDI RA
> Sylvie Palluel
> 
> [EMAIL PROTECTED]
> ___________________
> 
> 
> > -----Message d'origine-----
> > De�: Patrick van Kann [mailto:[EMAIL PROTECTED]
> > Envoy�: mardi 9 novembre 2004 14:19
> > ��: [EMAIL PROTECTED]
> > Objet�: RE: [castor-dev] [jdo] Reading, in the same transaction, a data
> > just created (reading via oql query)
> >
> > Sylvie,
> >
> > Your object won't be in the database until you call commit. Because OQL
> > doesn't go through the cache, it won't find anything unless it is in the
> > database.
> >
> > Why do you no longer have the ID? Surely you can get this from the
> object
> > after create()?
> >
> > Cheers,
> >
> > Patrick
> >
> >
> > -----Original Message-----
> > From: SYLVIE PALLUEL [mailto:[EMAIL PROTECTED]
> > Sent: Tue 11/9/2004 12:43 PM
> > To: [EMAIL PROTECTED]
> > Subject: [castor-dev] [jdo] Reading,  in the same transaction, a data
> > just created (reading via oql query)
> >
> > Sorry!
> > Here's the complete message ...
> >
> > Hi,
> >
> > In a transaction (between the db.begin() and the db.commit()), I'm
> > creating
> > a new object A .
> > And then, far away in the code, but in the same transaction, I need to
> > read
> > again the object A to create another object B.
> > To do this, as I have no longer the id, I'm usinq an oql query to
> retrieve
> > A... But it is not found...
> > What can I do (castor configuration or special command) to be able to
> read
> > it by an oql query ?
> >
> >
> > db.begin();
> >
> > log.info(" Creating object dossier via jdo ");
> > Dossier dossierAjoute = new Dossier();
> > dossierAjoute.setNomPatronymique("LEGRAND");
> > dossierAjoute.setPrenom("ALEXANDRE");
> > dossierAjoute.setCivilite("M");
> > dossierAjoute.setNumNatident("11111111111");
> >
> > db.create(dossierAjoute);
> >
> >
> > log.info(" Reading back the object just created via jdo "); lesDossiers
> =
> > RequetesJdoAssure.getLesDossiers("LEGRAND", "%", "ALEXANDRE", "%", db);
> > log.info(" Nbre de dossiers = " + lesDossiers.size()); // The result
> will
> > be
> > 0 ... for (Iterator iter = lesDossiers.iterator(); iter.hasNext();) {
> >     Dossier element = (Dossier) iter.next();
> >     log.info(" Nom Apres creation = " + element.getNomPatronymique() + "
> > - Pr�nom apr�s creation = " + element.getPrenom()); }
> >
> > // if I had the object if I could do this ...
> > log.info(" Reading back the object by db.load() ");
> > Dossier dossier=(Dossier)
> > db.load(Class.forName("fr.cnam.scapin.metier.donnees.dossiers.Dossier"),
> > new
> > Integer(dossierAjoute.getIdDossier()));
> > // this will be ok
> > log.info("Dossier relu par db.load " + dossier.toString());
> >
> > db.rollback();
> >
> >
> >
> > Thanks for your help.
> >
> > Sylvie
> > ___________________
> > CREDI RA
> > Sylvie Palluel
> >
> > [EMAIL PROTECTED]
> > ___________________
> >
> >
> > > -----Message d'origine-----
> > > De : SYLVIE PALLUEL [mailto:[EMAIL PROTECTED]
> > > Envoy� : mardi 9 novembre 2004 13:23
> > > � : [EMAIL PROTECTED]
> > > Objet : [castor-dev] [castor-user][jdo] Reading, in the same
> > transaction,
> > > a data just created (reading via oql query)
> > >
> > > Hi,
> > >
> > > In a transaction (between the db.begin() and the db.commit()), I'm
> > > creating
> > > a new object A .
> > > And then, far away in the code, but in the same transaction, I need to
> > > read
> > > again the object A to create another object B.
> > > To do this, as I have no longer the id, I'm usinq an oql query to
> > retrieve
> > > A... But it is not found...
> > > What can I do (castor configuration or special command) to be able to
> > read
> > > it by an oql query ?
> > >
> > >  .
> >

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

Reply via email to