Not yet, (tempted to say cherie, but holding back .. ;-)). Unless you make some 
budget available, then I am willing to work 24 by 7.

Werner

On Wed, 10 Nov 2004 16:27:36 +0100, SYLVIE PALLUEL wrote:

>Ok!
>
>May be you have found something to look for!?!
>
>Sylvie.
>
>___________________
>CREDI RA
>Sylvie Palluel
>
>[EMAIL PROTECTED]
>___________________
>
>
>> -----Message d'origine-----
>> De : Werner Guttmann [mailto:[EMAIL PROTECTED]
>> Envoyé : mercredi 10 novembre 2004 14:32
>> À : [EMAIL PROTECTED]
>> Objet : Re: [castor-dev] [jdo] Reading, in the same transaction, a data
>> just created (reading via oql query)
>> 
>> Will do ... I didn't realize that the problem is with OQL queries that do
>> not query by the id. Maybe I should have read the thread more carefully,
>> though ..
>> ;-).
>> 
>> Werner
>> 
>> On Wed, 10 Nov 2004 13:42:48 +0100, Ralf Joachim wrote:
>> 
>> >
>> >I recognized this problem too some time ago but didn't analyse as deep
>> >as Silvie because I had the identity available.
>> >
>> >Could you try the query:
>> >select account from testXXX.Account account where description = "account
>> 10"
>> >
>> >Regards
>> >Ralf
>> >
>> >Werner Guttmann schrieb:
>> >> Sylvie,
>> >>
>> >> I've just run a couple of tests trying to create an object and load it
>> again using both Database.load() and OQLQuery.execute() .. and I don't
>> have an
>> >> problems.  Here's a code fragment I used in one of the tests:
>> >>
>> >>   public void testQueryAccountCreatedWithinTransaction() throws
>> Exception {
>> >>           Account account = null;
>> >>
>> >>           Database db = jdo.getDatabase();
>> >>
>> >>           db.begin();
>> >>           account = new Account();
>> >>           account.setId (new Integer (10));
>> >>           account.setDescription("account 10");
>> >>           db.create(account);
>> >>
>> >>           OQLQuery query = db.getOQLQuery("select account from
>> testXXX.Account account where id = 10");
>> >>           QueryResults results = query.execute();
>> >>           assertTrue (results.hasMore());
>> >>           if (results.hasMore()) {
>> >>                   account = (Account) results.next();
>> >>                   assertNotNull (account);
>> >>                   assertEquals (new Integer(10), account.getId());
>> >>                   assertEquals ("account 10",
>account.getDescription());
>> >>           }
>> >>           db.commit();
>> >>
>> >>           db.begin();
>> >>           account = (Account) db.load (Account.class, new Integer
>(10));
>> >>           db.remove (account);
>> >>           db.commit();
>> >>
>> >>           db.close();
>> >>   }
>> >>
>> >> As you can see, I am creating a new Account instance (id 10), and use a
>> OQLQuery to obtain the very same object again.
>> >>
>> >> If that little code fragment does not mimick what you are doing, let me
>> know where the difference is.
>> >>
>> >> Regards
>> >> Werner
>> >>
>> >> On Tue, 09 Nov 2004 19:01:35 +0100, SYLVIE PALLUEL wrote:
>> >>
>> >>
>> >>>I have only one transaction to do everything. So I shouldn't have pb
>> with
>> >>>transaction isolation.
>> >>>
>> >>>After having read your answer, I've made new tests .
>> >>>
>> >>>While using a database which supports rollback, I can do this in the
>> same
>> >>>transaction:
>> >>>. create an object A
>> >>>. read back the object A with a pass-thru OQL query
>> >>>. read back the object A with a db.load(...,objetA.getId())
>> >>>. apply the rollback
>> >>>
>> >>>I can't :
>> >>>. read back the object A with a OQL query
>> >>>
>> >>>And If I have two different transactions before the rollback, I can't
>> read
>> >>>(anyway I use) in my transaction #2 the object being created in my
>> >>>transaction #1. So the transaction isolation is ok.
>> >>>
>> >>>I think there's really something wrong with the way the OQL query is
>> >>>executed in this case.
>> >>>Is there something new on this point with the future version?
>> >>>
>> >>>The same tests made using direct access by jdbc are ok.
>> >>>
>> >>>Thanks for your interest.
>> >>>
>> >>>Sylvie.
>> >>>
>> >>>P.S.:
>> >>>I can't commit the create before trying to access the object in OQL,
>> because
>> >>>I must rollback everything from the beginning, if there's anything
>> wrong
>> >>>during the whole operation.
>> >>>
>> >>>I tried to explain to the developers that it should be better to store
>> the
>> >>>id in a variable somewhere and access later when trying to load it
>> (rather
>> >>>than through a query, OQL or otherwise)... But they just see the fact
>> that
>> >>>it must work like simple jdbc way ...
>> >>>
>> >>>
>> >>>___________________
>> >>>CREDI RA
>> >>>Sylvie Palluel
>> >>>
>> >>>[EMAIL PROTECTED]
>> >>>___________________
>> >>>
>> >>>-----Message d'origine-----
>> >>>De : Patrick van Kann [mailto:[EMAIL PROTECTED]
>> >>>Envoyé : mardi 9 novembre 2004 18:06
>> >>>À : SYLVIE PALLUEL
>> >>>Objet : RE: RE : RE : [castor-dev] [jdo] Reading, in the same
>> transaction, a
>> >>>data just created (reading via oql query)
>> >>>
>> >>>In that case, I think Castor OQL is behaving correctly with respect to
>> >>>transaction isolation.
>> >>>MySQL without Innodb simply doesn't support transactions, hence the
>> data is
>> >>>written regardless of whether you call db.commit().
>> >>>In order to guarantee that your transaction is isolated, queries should
>> not
>> >>>have access to the data in the database until it commits for the reason
>> I
>> >>>stated earlier. If your application uses JDBC or pass-through to load
>> an
>> >>>object that could become unavailable due a rollback, your app would be
>> in an
>> >>>inconsistent state.
>> >>>
>> >>>I think you should consider re-designing your application so that you
>> either
>> >>>commit the create before trying to access the object in OQL, or you
>> need to
>> >>>store the id in a variable somewhere that you can access later when
>> trying
>> >>>to load it (rather than through a query, OQL or otherwise).
>> >>>
>> >>>In any case, surely OQL is an unreliable way to retrieve an object?
>> What if
>> >>>you had to results that matched your criteria?
>> >>>
>> >>>I hope this helps,
>> >>>
>> >>>Patrick
>> >>>
>> >>>-----Original Message-----
>> >>>From: SYLVIE PALLUEL [mailto:[EMAIL PROTECTED]
>> >>>Sent: Tue 11/9/2004 4:28 PM
>> >>>To: Patrick van Kann
>> >>>Subject: RE : RE : [castor-dev] [jdo] Reading,  in the same
>> transaction, a
>> >>>data  just created (reading via oql query)
>> >>>
>> >>>Yes, I can confirm that when I rollback the transaction, the new data
>> is not
>> >>>created in my database (which way I use to test) .
>> >>>
>> >>>
>> >>>
>> >>>For information, I have the problem with MySql Innodb (supports
>> rollback)
>> >>>and Oracle.
>> >>>
>> >>>With MySql Isam (no rollback), the program was ok, that means that the
>> Oql
>> >>>query brings back the new Object ..
>> >>>
>> >>>
>> >>>
>> >>>In fact it seems that the Oql query tries to retrieve the object from
>> the
>> >>>database, and is not looking at his cache .
>> >>>
>> >>>
>> >>>
>> >>>Sylvie.
>> >>>
>> >>>___________________
>> >>>
>> >>>CREDI RA
>> >>>
>> >>>Sylvie Palluel
>> >>>
>> >>>
>> >>>
>> >>>[EMAIL PROTECTED]
>> >>>
>> >>>___________________
>> >>>
>> >>>
>> >>>
>> >>>-----Message d'origine-----
>> >>>De : Patrick van Kann [mailto:[EMAIL PROTECTED]
>> >>>Envoyé : mardi 9 novembre 2004 16:46
>> >>>À : SYLVIE PALLUEL
>> >>>Objet : RE: RE : [castor-dev] [jdo] Reading, in the same transaction, a
>> data
>> >>>just created (reading via oql query)
>> >>>
>> >>>
>> >>>
>> >>>I must admit I am surprised that this is the behaviour you are seeing.
>> I
>> >>>would have thought that the data would not be written to the database
>> until
>> >>>the commit phase, otherwise you risk dirty reads (for example if the
>> castor
>> >>>transaction later rolls back after your JDBC call has accessed the
>> data).
>> >>>
>> >>>Can you confirm that when you rollback the transaction (instead of
>> >>>committing) that the data in the database is removed after the
>> rollback(i.e.
>> >>>not available to either JDBC or OQL pass through)?
>> >>>
>> >>>Patrick
>> >>>
>> >>>
>> >>>-----Original Message-----
>> >>>From: SYLVIE PALLUEL [mailto:[EMAIL PROTECTED]
>> >>>Sent: Tue 11/9/2004 3:09 PM
>> >>>To: [EMAIL PROTECTED]
>> >>>Subject: RE : [castor-dev] [jdo] Reading,  in the same transaction, a
>> data
>> >>>just created (reading via oql query)
>> >>>
>> >>>
>> >>>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
>> >
>> >--
>> >
>> >Syscon Ingenieurbüro für
>> >Meß- und Datentechnik GmbH
>> >Ralf Joachim
>> >Raiffeisenstraße 11
>> >D-72127 Kusterdingen
>> >Germany
>> >
>> >Tel.   +49 7071 3690 52
>> >Mobil: +49 173 9630135
>> >Fax    +49 7071 3690 98
>> >
>> >Email: [EMAIL PROTECTED]
>> >Web:   www.syscon-world.de
>> >
>> >
>> >
>> >-----------------------------------------------------------
>> >If you wish to unsubscribe from this mailing, send mail to
>> >[EMAIL PROTECTED] with a subject of:
>> >        unsubscribe castor-dev
>> >
>
>

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

Reply via email to