> But shouldn't I worry about the fact that a brand new instance is
detached?
You must! Strange behavior.   

01: ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,this,version);
02: System.out.println("detached " +
((PersistenceCapable)ret).pcIsDetached());
03: _em.persist(ret);

the constructor of ProcessDAOImpl (or some instruction before that)
seems to be doing something that prompts OpenJPA to issue the following
SQL:
(are these three lines just following each other?) 
 SELECT t0.ID, t0.VERSION, t0.GUID, t0.NUMBER_OF_INSTANCES,
t0.PROCESS_ID, t0.PROCESS_TYPE FROM ODE_PROCESS t0 WHERE (t0.PROCESS_ID
= ?) [params=(String) { http://ode/bpel/unit-test}HelloWorld2-1]

Can you share ProcessDAOImpl and BPELDAOConnectionImpl source + your
persistence.xml?


Pinaki Poddar
BEA Systems
415.402.7317  


-----Original Message-----
From: Matthieu Riou [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, February 28, 2007 7:50 PM
To: Pinaki Poddar
Cc: open-jpa-dev@incubator.apache.org
Subject: Re: OpenJPA & Transaction configuration

Thanks! But shouldn't I worry about the fact that a brand new instance
is detached? I could be wrong but it looks like it's more a symptom of
something wrong in my configuration, no?


On 2/28/07, Pinaki Poddar <[EMAIL PROTECTED]> wrote:

          instead of _em.persist(ret);
        try
          _em.merge(ret);
        
        as ret is detached instance rather than new.
        
        
        
        Pinaki Poddar
        BEA Systems
        415.402.7317
        
        
        -----Original Message-----
        From: Matthieu Riou [mailto: [EMAIL PROTECTED]
        Sent: Wednesday, February 28, 2007 6:29 PM
        To: open-jpa-dev@incubator.apache.org
        Subject: OpenJPA & Transaction configuration 
        
        Hi,
        
        I'm going back at the OpenJPA implementation for the Apache ODE
project
        and am still having problems with the setup. Whan I try to
persist a new
        object I get an exception "Attempt to persist detached object".
I guess 
        the when I instantiate my object OpenJPA can't locate its
transactional
        context or something related therefore assuming that the object
is
        instantiated outside of any persistent context.
        
        Here is the code that creates the EntityManagerFactory: 
        
                HashMap<String, Object> propMap = new
HashMap<String,Object>();
                propMap.put("openjpa.Log", "DefaultLevel=TRACE");
                propMap.put("openjpa.jdbc.DBDictionary ", "
        org.apache.openjpa.jdbc.sql.DerbyDictionary");
                propMap.put("openjpa.ManagedRuntime", new
TxMgrProvider());
                propMap.put("openjpa.ConnectionFactory", _ds);
                propMap.put("openjpa.ConnectionFactoryMode", "managed");
                propMap.put("openjpa.Log", "DefaultLevel=TRACE");
                _emf = Persistence.createEntityManagerFactory
("ode-dao",
        propMap);
        
        And here is my object instantiation code:
        
                ProcessDAOImpl ret = new
        ProcessDAOImpl(pid,type,guid,this,version);
                System.out.println("detached " + 
        ((PersistenceCapable)ret).pcIsDetached());
                _em.persist(ret);
        
        My little debugging statement outputs "true". I've reproduced
the full
        log below. I've also encapsulated to transaction manager and the

        transaction to check whether OpenJPA was getting the transaction
and
        registering a synchronizer properly. It seems to be doing so
(the log
        statements are just a couple lines above the '.....'). I've
removed all 
        the mapping logs just to avoid making this too lengthy.
        
        Any idea of what the problem could be? I'm kind of stuck on this
as it's
        hard to debug the enhanced code that gets called when I
instantiate my 
        process object.
        
        DEBUG - ODEMessageReceiver.receive(47) | Received message for
        helloWorld.hello DEBUG - ODEService.onAxisMessageExchange(96) |
Starting
        transaction.
        DEBUG - BpelEngineImpl.route(237) | Routed: svcQname { 
        http://ode/bpel/unit-test.wsdl}HelloService --> BpelProcess[{
        http://ode/bpel/unit-test}HelloWorld2-1 ]
        29603  ode-dao  INFO   [http-8080-Processor25] openjpa.Runtime -
        Starting
        OpenJPA 0.9.7-incubating-SNAPSHOT
        29604  ode-dao  TRACE  [http-8080-Processor25] openjpa.Runtime -
        Properties:
        openjpa.EntityManagerFactory : default
        openjpa.DataCache: false
        openjpa.MetaDataFactory: jpa(Types=
        org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl
        
;org.apache.ode.dao.jpa.CorrelationSetDAOImpl;org.apache.ode.dao.jpa.Cor
        
relatorDAOImpl;org.apache.ode.dao.jpa.EventDAOImpl;org.apache.ode.dao.jp

        
a.FaultDAOImpl;org.apache.ode.dao.jpa.MessageDAOImpl;org.apache.ode.dao.
        
jpa.MessageExchangeDAOImpl;org.apache.ode.dao.jpa.MessageRouteDAOImpl;or
        
g.apache.ode.dao.jpa.PartnerLinkDAOImpl;org.apache.ode.dao.jpa.ProcessDA

        
OImpl;org.apache.ode.dao.jpa.ProcessInstanceDAOImpl;org.apache.ode.dao.j
        pa.ScopeDAOImpl;org.apache.ode.dao.jpa.XmlDataDAOImpl)
        openjpa.InverseManager: false
        openjpa.ReadLockLevel: read
        openjpa.DataCacheManager : default
        openjpa.jdbc.SubclassFetchMode: join
        openjpa.jdbc.UpdateManager: default
        openjpa.jdbc.SynchronizeMappings: false
        openjpa.NontransactionalRead: true
        openjpa.QueryCompilationCache: true
        openjpa.MaxFetchDepth : -1
        openjpa.RetainState: true
        openjpa.DynamicDataStructs: false
        openjpa.BrokerFactory: jdbc
        openjpa.WriteLockLevel: write
        openjpa.ManagedRuntime:
        
org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl$TxMgrProvider 
        openjpa.jdbc.EagerFetchMode: parallel
        openjpa.RestoreState: immutable
        openjpa.jdbc.SchemaFactory: dynamic
        openjpa.LockManager: version
        openjpa.BrokerImpl: default
        openjpa.NontransactionalWrite: true
        openjpa.MetaDataRepository: default
        openjpa.Log: true(DefaultLevel=TRACE)
        openjpa.jdbc.ResultSetType: forward-only
        openjpa.AutoDetach:
        openjpa.ConnectionRetainMode: on-demand
        openjpa.SavepointManager: in-mem 
        openjpa.jdbc.DBDictionary: derby
        openjpa.Optimistic: true
        openjpa.ConnectionFactoryMode: managed
        openjpa.Sequence: table
        openjpa.FetchGroups: default
        openjpa.jdbc.Schemas:
        openjpa.Id: ode-dao
        openjpa.OrphanedKeyAction : log
        openjpa.FlushBeforeQueries: true
        openjpa.AutoClear: datastore
        openjpa.Compatibility: default
        openjpa.DetachState: loaded
        openjpa.jdbc.LRSSize: query
        openjpa.Multithreaded: false
        openjpa.FetchBatchSize : -1
        openjpa.jdbc.SQLFactory: default
        openjpa.IgnoreChanges: false
        openjpa.jdbc.MappingDefaults: jpa
        openjpa.TransactionMode: local
        openjpa.RetryClassRegistration: false
        openjpa.jdbc.FetchDirection: forward 
        openjpa.ClassResolver: default
        openjpa.LockTimeout: -1
        openjpa.DataCacheTimeout: -1
        openjpa.QueryCache: true
        openjpa.jdbc.DriverDataSource: simple
        openjpa.jdbc.TransactionIsolation: default
        openjpa.ProxyManager : default
        29604  ode-dao  TRACE  [http-8080-Processor25] openjpa.MetaData
- Using
        metadata factory "
        
[EMAIL PROTECTED]".
        29604  ode-dao  INFO   [http-8080-Processor25] openjpa.jdbc.JDBC
- Using
        dictionary class "org.apache.openjpa.jdbc.sql.DerbyDictionary".
        WARN -
BPELDAOConnectionFactoryImpl$DebugTxMgr.getTransaction(130) | JPA
        get transaction WARN -
        
BPELDAOConnectionFactoryImpl$DebugTx.registerSynchronization(179) | 
        Synchronization registration on
org.apache.openjpa.kernel.BrokerImpl
        WARN -
BPELDAOConnectionFactoryImpl$DebugTx.registerSynchronization(179)
        | Synchronization registration on
        
org.apache.openjpa.kernel.AbstractBrokerFactory$RemoveTransactionSync 
        29610  ode-dao  INFO   [http-8080-Processor25] openjpa.MetaData
- Found
        13
        classes with metadata in 0 milliseconds.
        29834  ode-dao  TRACE  [http-8080-Processor25] openjpa.MetaData
-
        Loading metadata for "class 
        org.apache.ode.dao.jpa.MessageExchangeDAOImpl" under mode
        "[META][QUERY]".
        ..........
        ..........
        30386  ode-dao  TRACE  [http-8080-Processor25] openjpa.jdbc.SQL
- <t
        9601173, conn 16542562> executing prepstmnt 6493766 SELECT
t0.ID,
        t0.VERSION, t0.GUID, t0.NUMBER_OF_INSTANCES, t0.PROCESS_ID,
        t0.PROCESS_TYPE FROM ODE_PROCESS t0 WHERE (t0.PROCESS_ID = ?)
        [params=(String) { http://ode/bpel/unit-test}HelloWorld2-1
<http://ode/bpel/unit-test}HelloWorld2-1> ]
        30387  ode-dao  TRACE  [http-8080-Processor25] openjpa.jdbc.SQL
- <t
        9601173, conn 16542562> [0 ms] spent
        30388  ode-dao  TRACE  [http-8080-Processor25] openjpa.jdbc.JDBC
- <t
        9601173, conn 16542562> [0 ms] close detached true WARN -
        BPELDAOConnectionFactoryImpl$DebugTxMgr.getTransaction(130) |
JPA get
        transaction ERROR - BpelServerImpl.bounceProcessDAO(334) |
DbError
        <2|false|0.9.7-incubating-SNAPSHOT> 
        org.apache.openjpa.persistence.EntityExistsException: Attempt to
persist
        detached object "[EMAIL PROTECTED]".
        FailedObject: [EMAIL PROTECTED]
            at 
        
org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2346)
            at
        
org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2204)
            at org.apache.openjpa.kernel.DelegatingBroker.persist(
        DelegatingBroker.java :991)
            at org.apache.openjpa.persistence.EntityManagerImpl.persist(
        EntityManagerImpl.java:525)
            at
org.apache.ode.dao.jpa.BPELDAOConnectionImpl.createProcess(
        BPELDAOConnectionImpl.java:78)
        
        Thanks! 
        Matthieu
        
_______________________________________________________________________
        Notice:  This email message, together with any attachments, may
contain
        information  of  BEA Systems,  Inc.,  its subsidiaries  and
affiliated 
        entities,  that may be confidential,  proprietary,  copyrighted
and/or
        legally privileged, and is intended solely for the use of the
individual
        or entity named in this message. If you are not the intended
recipient, 
        and have received this message in error, please immediately
return this
        by email and then delete it.
        


Reply via email to