Jacek Laskowski wrote:
>
>
> Hi,
>
> Could you send us the openjpa logs - it should be in
> var/log/geronimo.log? I assume they're generated according to the
> property in persistence.xml:
>
> <property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE" />
>
> I wonder why you do the following in the stand-alone client code:
>
> MTIGroup g1 = new MTIGroup();
> g1.setId(2);
> g1.setName("testGroup");
>
> Note the setId() call.
>
> The null from
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:162)
> call suggests that there might be issues with geronimo plan file of
> the application. You've got
> <jta-data-source>xxxDataSouurce</jta-data-source> in persistence.xml
> file - there's 'u' doubled. Is that correct? Send us the geronimo plan
> you're using with the application. Is the data source one of the
> default data sources of Geronimo?
>
> I have never worked with mysql and TableGenerator for jpa-based
> application in Geronimo so I'm asking these question to avoid dealing
> with the setup *if* the issue is simpler to fix without it.
>
> Jacek
>
> --
> Jacek Laskowski
> http://www.JacekLaskowski.pl
>
>
Hi,
I've attached my bean including the source files:
Here is the code of my stand-alone client:
InitialContext ic = null;
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.RemoteInitialContextFactory");
properties.put(Context.PROVIDER_URL,"ejbd://localhost:4201");
try {
ic = new InitialContext(properties);
TestRemote lar =
(TestRemote)ic.lookup("TestImplRemote");
MTIGroup g1 = new MTIGroup();
g1.setName("test");
g1.setDescription("test description");
lar.createGroup(g1);
} catch (NamingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
The XXXDataSource is a MySQL XA DataSource, driver revision is 5.0.7.
Here is the database table create-command:
CREATE TABLE group_table (
id INTEGER UNSIGNED NOT NULL,
name VARCHAR(100) NOT NULL,
description TEXT NOT NULL,
UNIQUE KEY(name),
PRIMARY KEY (id)
);
I have also tried
CREATE TABLE group_table (
id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
name VARCHAR(100) NOT NULL,
description TEXT NOT NULL,
UNIQUE KEY(name),
PRIMARY KEY (id)
);
This configuration end with the following:
0 XXX TRACE [Thread-72] openjpa.Runtime - Setting the following
properties from "?" into configuration: {openjpa.Multithreaded=true,
openjpa.RestoreState=all,
[EMAIL PROTECTED],
openjpa.Sequence=table(Table=OPENJPASEQ, Increment=100),
openjpa.AutoDetach=close,
openjpa.MetaDataFactory=jpa(Types=entities.MTIGroup),
openjpa.TransactionMode=managed, openjpa.jdbc.SynchronizeMappings=false,
openjpa.ConnectionFactoryMode=managed,
[EMAIL PROTECTED],
openjpa.Id=XXX, openjpa.jdbc.DBDictionary=mysql(SupportsSubselect=true),
openjpa.Log=DefaultLevel=TRACE,SQL=TRACE,
openjpa.jdbc.UpdateManager=operation-order,
openjpa.NontransactionalRead=true,
javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl,
openjpa.Optimistic=true, openjpa.DetachState=all, openjpa.DataCache=false}
1 XXX TRACE [Thread-72] openjpa.MetaData - Scanning resource
"META-INF/orm.xml" for persistent types.
2 XXX TRACE [Thread-72] openjpa.MetaData - parsePersistentTypeNames()
found [entities.MTIGroup].
2 XXX TRACE [Thread-72] openjpa.MetaData - Found 1 classes with metadata
in 1 milliseconds.
0 XXX TRACE [Thread-72] openjpa.Runtime - Setting the following
properties from "?" into configuration: {openjpa.Multithreaded=true,
openjpa.RestoreState=all,
[EMAIL PROTECTED],
openjpa.Sequence=table(Table=OPENJPASEQ, Increment=100),
openjpa.AutoDetach=close, openjpa.BrokerImpl=non-finalizing,
openjpa.MetaDataFactory=jpa(Types=entities.MTIGroup),
openjpa.TransactionMode=managed, openjpa.jdbc.SynchronizeMappings=false,
openjpa.ConnectionFactoryMode=managed,
[EMAIL PROTECTED],
openjpa.Id=XXX, openjpa.jdbc.DBDictionary=mysql(SupportsSubselect=true),
openjpa.Log=DefaultLevel=TRACE,SQL=TRACE,
openjpa.jdbc.UpdateManager=operation-order,
openjpa.NontransactionalRead=true,
javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl,
openjpa.Optimistic=true, openjpa.BrokerFactory=jdbc,
openjpa.DetachState=all, openjpa.DataCache=false}
324 XXX TRACE [Thread-72] openjpa.Enhance - "entities/MTIGroup" requires
runtime enhancement: true
350 XXX TRACE [Thread-72] openjpa.MetaData - Loading metadata for "class
entities.MTIGroup" under mode "[META][QUERY]".
350 XXX TRACE [Thread-72] openjpa.MetaData - Parsing class
"entities.MTIGroup".
350 XXX TRACE [Thread-72] openjpa.MetaData - Parsing package
"entities.MTIGroup".
358 XXX TRACE [Thread-72] openjpa.MetaData - Generating default metadata
for type "entities.MTIGroup".
358 XXX TRACE [Thread-72] openjpa.MetaData - Using reflection for
metadata generation.
377 XXX TRACE [Thread-72] openjpa.MetaData - Parsing query "allGroups".
396 XXX TRACE [Thread-72] openjpa.MetaData - Parsing query "groupByName".
413 XXX TRACE [Thread-72] openjpa.MetaData - Set persistence-capable
superclass of "entities.MTIGroup" to "null".
413 XXX TRACE [Thread-72] openjpa.MetaData - Resolving metadata for
"[EMAIL PROTECTED]".
413 XXX TRACE [Thread-72] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
413 XXX TRACE [Thread-72] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
414 XXX TRACE [Thread-72] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
414 XXX TRACE [Thread-72] openjpa.Enhance - Enhancing type "class
entities.MTIGroup".
6867 XXX INFO [Thread-74] openjpa.Runtime - Starting OpenJPA 1.0.0
6867 XXX TRACE [Thread-74] openjpa.Runtime - Properties:
openjpa.RestoreState: all
openjpa.Sequence: table(Table=OPENJPASEQ, Increment=100)
openjpa.jdbc.SQLFactory: default
openjpa.BrokerImpl: non-finalizing
openjpa.Id: XXX
openjpa.QueryCache: true
openjpa.ReadLockLevel: read
openjpa.LockManager: version
openjpa.jdbc.UpdateManager: operation-order
openjpa.NontransactionalRead: true
openjpa.DynamicDataStructs: false
openjpa.RetainState: true
openjpa.DetachState: all
openjpa.jdbc.MappingDefaults: jpa
openjpa.ClassResolver:
org.apache.openjpa.persistence.PersistenceUnitInfoImpl$ClassResolverImpl
openjpa.AutoDetach: close
openjpa.TransactionMode: managed
openjpa.FlushBeforeQueries: true
openjpa.jdbc.TransactionIsolation: default
openjpa.jdbc.SchemaFactory: dynamic
openjpa.MetaDataRepository: default
openjpa.RuntimeUnenhancedClasses: supported
openjpa.jdbc.DriverDataSource: simple
openjpa.DataCache: false
openjpa.WriteLockLevel: write
openjpa.MetaDataFactory: jpa(Types=entities.MTIGroup)
openjpa.LockTimeout: -1
openjpa.jdbc.ResultSetType: forward-only
openjpa.ManagedRuntime: auto
openjpa.jdbc.LRSSize: query
openjpa.QueryCompilationCache: true
openjpa.jdbc.DBDictionary: mysql(SupportsSubselect=true)
openjpa.Log: true(DefaultLevel=TRACE,SQL=TRACE)
openjpa.jdbc.EagerFetchMode: parallel
openjpa.Optimistic: true
openjpa.SavepointManager: in-mem
openjpa.Multithreaded: true
openjpa.ProxyManager: default
openjpa.OrphanedKeyAction: log
openjpa.FetchBatchSize: -1
openjpa.AutoClear: datastore
openjpa.jdbc.Schemas:
openjpa.jdbc.SynchronizeMappings: false
openjpa.ConnectionFactoryMode: managed
openjpa.RetryClassRegistration: false
openjpa.Compatibility: default
openjpa.MaxFetchDepth: -1
openjpa.InverseManager: false
openjpa.jdbc.FetchDirection: forward
openjpa.jdbc.SubclassFetchMode: join
openjpa.FetchGroups: default
openjpa.IgnoreChanges: false
openjpa.DataCacheTimeout: -1
openjpa.NontransactionalWrite: true
openjpa.ConnectionRetainMode: on-demand
openjpa.EntityManagerFactory: default
openjpa.BrokerFactory: jdbc
openjpa.DataCacheManager: default
6868 XXX TRACE [Thread-74] openjpa.MetaData - Using metadata factory
"[EMAIL PROTECTED]".
6868 XXX INFO [Thread-74] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.MySQLDictionary".
6870 XXX TRACE [Thread-74] openjpa.MetaData - Scanning resource
"META-INF/orm.xml" for persistent types.
6870 XXX TRACE [Thread-74] openjpa.MetaData - parsePersistentTypeNames()
found [entities.MTIGroup].
6871 XXX TRACE [Thread-74] openjpa.MetaData - Found 1 classes with
metadata in 1 milliseconds.
6871 XXX TRACE [Thread-74] openjpa.MetaData - Loading metadata for "class
entities.MTIGroup" under mode "[META][QUERY]".
6871 XXX TRACE [Thread-74] openjpa.MetaData - Parsing class
"entities.MTIGroup".
6871 XXX TRACE [Thread-74] openjpa.MetaData - Parsing package
"entities.MTIGroup".
6987 XXX TRACE [Thread-74] openjpa.MetaData - Generating default metadata
for type "entities.MTIGroup".
7030 XXX TRACE [Thread-74] openjpa.MetaData - Parsing query "allGroups".
7050 XXX TRACE [Thread-74] openjpa.MetaData - Parsing query
"groupByName".
7070 XXX TRACE [Thread-74] openjpa.MetaData - Parsing table generator
"GroupIdGen".
7088 XXX TRACE [Thread-74] openjpa.MetaData - Set persistence-capable
superclass of "entities.MTIGroup" to "null".
7088 XXX TRACE [Thread-74] openjpa.MetaData - Resolving metadata for
"[EMAIL PROTECTED]".
7088 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7088 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7089 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7089 XXX TRACE [Thread-74] openjpa.MetaData - Preparing mapping for
"entities.MTIGroup".
7089 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7089 XXX TRACE [Thread-74] openjpa.MetaData - "id" has mapping
strategy
"org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy".
7089 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7089 XXX TRACE [Thread-74] openjpa.MetaData - "description" has
mapping
strategy "org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy".
7089 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7089 XXX TRACE [Thread-74] openjpa.MetaData - "name" has mapping
strategy "org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy".
7090 XXX TRACE [Thread-74] openjpa.MetaData -
"entities.MTIGroup<discriminator>" has mapping strategy "none".
7090 XXX TRACE [Thread-74] openjpa.MetaData -
"entities.MTIGroup<version>" has mapping strategy "none".
7090 XXX TRACE [Thread-74] openjpa.MetaData - Resolving mapping for
"[EMAIL PROTECTED]".
7090 XXX TRACE [Thread-74] openjpa.MetaData - "entities.MTIGroup" has
mapping strategy "full".
7090 XXX TRACE [Thread-74] openjpa.MetaData - Initializing mapping for
"[EMAIL PROTECTED]".
7090 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7090 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7090 XXX TRACE [Thread-74] openjpa.MetaData - Resolving field
"[EMAIL PROTECTED]".
7091 XXX TRACE [Thread-74] openjpa.Runtime - An exception occurred while
ending the transaction. This exception will be re-thrown.
<openjpa-1.0.0-r420667:568756 nonfatal store error>
org.apache.openjpa.util.StoreException: null
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:162)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:341)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:247)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
at org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
at
org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:557)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:450)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:426)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:541)
at
org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
at
org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:501)
at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2770)
at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:940)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1884)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1844)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1762)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:499)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:239)
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:140)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:219)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:212)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:120)
at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:164)
at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:122)
at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:84)
at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:60)
at
org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:73)
at
org.apache.openejb.server.ServiceAccessController.service(ServiceAccessController.java:55)
at org.apache.openejb.server.ServiceDaemon$1.run(ServiceDaemon.java:117)
at java.lang.Thread.run(Thread.java:810)
Caused by: javax.transaction.SystemException
at
org.apache.openjpa.ee.RegistryManagedRuntime$TransactionManagerRegistryFacade.suspend(RegistryManagedRuntime.java:176)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:158)
... 36 more
14:07:22,047 WARN [Transaction] Unexpected exception from beforeCompletion;
transaction will roll back
<openjpa-1.0.0-r420667:568756 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: null
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:162)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:341)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:247)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
at org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
at
org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:557)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:450)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:426)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:541)
at
org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
at
org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:501)
at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2770)
at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:940)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1884)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1844)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1762)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:499)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:239)
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:140)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:219)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:212)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:120)
at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:164)
at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:122)
at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:84)
at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:60)
at
org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:73)
at
org.apache.openejb.server.ServiceAccessController.service(ServiceAccessController.java:55)
at org.apache.openejb.server.ServiceDaemon$1.run(ServiceDaemon.java:117)
at java.lang.Thread.run(Thread.java:810)
Caused by:
javax.transaction.SystemException
at
org.apache.openjpa.ee.RegistryManagedRuntime$TransactionManagerRegistryFacade.suspend(RegistryManagedRuntime.java:176)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:158)
... 36 more http://www.nabble.com/file/p13948662/XXXXBean.jar
XXXXBean.jar
When I use the following table creation:
CREATE TABLE group_table (
id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,
name VARCHAR(100) NOT NULL,
description TEXT NOT NULL,
UNIQUE KEY(name),
PRIMARY KEY (id)
);
and corresponding the annotion in the entity:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId() {
return id;
}
It works with the same client code.
Mark
--
View this message in context:
http://www.nabble.com/EntityExistsException%3A-Attempt-to-persist-detached-object-tf4856534s134.html#a13948662
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.