You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by David Ljuba <lj...@gmail.com> on 2008/12/03 15:45:55 UTC
@GeneratedValue(strategy = GenerationType.TABLE... : org.apache.openjpa.persistence.PersistenceException: The Transaction Synchronization Registry can not suspend the current transaction
we have this symptom:
Generates exception:
...
18047 xxx INFO [RMI TCP Connection(216)-192.168.0.63] openjpa.Runtime -
Starting OpenJPA 1.2.0
18344 xxx INFO [RMI TCP Connection(216)-192.168.0.63] openjpa.jdbc.JDBC
- Using dictionary class "org.apache.openjpa.jdbc.sql.SQLServerDictionary"
(Microsoft SQL Server 09.00.3073 ,jTDS Type 4 JDBC Driver for MS SQL Server
and Sybase 1.2.2).
...
03 Dec 2008 15:04:17,421 INFO [pool-4-thread-2] (Transaction.java:70) - TX
Required: Started transaction
org.apache.geronimo.transaction.manager.TransactionImpl@b0d739
03 Dec 2008 15:04:17,421 DEBUG [pool-4-thread-2]
(net.xxx.persistenceTest.probnaTabela.ProbnaTabela1Home.java:66) -
persisting ProbnaTabela1 instance
03 Dec 2008 15:04:17,531 DEBUG [pool-4-thread-2]
(net.xxx.persistenceTest.probnaTabela.ProbnaTabela1Home.java:66) - persist
successful
03 Dec 2008 15:04:17,531 INFO [pool-4-thread-2] (Transaction.java:70) - TX
Required: Committing transaction
org.apache.geronimo.transaction.manager.TransactionImpl@b0d739
15:04:17,531 WARN [Transaction] Unexpected exception from beforeCompletion;
transaction will roll back
<openjpa-1.2.0-r422266:683325 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: The Transaction
Synchronization Registry can not suspend the current transaction.
at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238)
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:65)
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:698)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:487)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:463)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:682)
at
org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
at
org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:519)
at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2823)
at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:959)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1948)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1908)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1826)
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:245)
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:138)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:76)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:284)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.access$100(EjbTimerServiceImpl.java:43)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl$EjbTimeoutTimerTask$1.run(EjbTimerServiceImpl.java:350)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: The Transaction Synchronization Registry
can not suspend the current transaction.
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:419)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:290)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
... 30 more
Caused by: javax.transaction.NotSupportedException: The Transaction
Synchronization Registry can not suspend the current transaction.
at
org.apache.openjpa.ee.RegistryManagedRuntime.doNonTransactionalWork(RegistryManagedRuntime.java:203)
at
org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:312)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:415)
... 32 more
03 Dec 2008 15:04:17,531 WARN [pool-4-thread-2] (Transaction.java:96) -
Unexpected exception from beforeCompletion; transaction will roll back
<openjpa-1.2.0-r422266:683325 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: The Transaction
Synchronization Registry can not suspend the current transaction.
at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238)
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:65)
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:698)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:487)
at
org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:463)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:682)
at
org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
at
org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:519)
at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2823)
at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:959)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1948)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1908)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1826)
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:245)
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:138)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:76)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:284)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.access$100(EjbTimerServiceImpl.java:43)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl$EjbTimeoutTimerTask$1.run(EjbTimerServiceImpl.java:350)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: The Transaction Synchronization Registry
can not suspend the current transaction.
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:419)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:290)
at
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
... 30 more
Caused by: javax.transaction.NotSupportedException: The Transaction
Synchronization Registry can not suspend the current transaction.
at
org.apache.openjpa.ee.RegistryManagedRuntime.doNonTransactionalWork(RegistryManagedRuntime.java:203)
at
org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:312)
at
org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:415)
... 32 more
03 Dec 2008 15:04:17,531 INFO [pool-4-thread-2] (Transaction.java:70) - The
transaction has been rolled back rather than commited: Unable to commit:
transaction marked for rollback
15:04:17,531 WARN [Timer] Exception from ejbTimeout on
limores-core-internal.jar/AutoErrorCheckBean
org.apache.openejb.ApplicationException:
javax.transaction.TransactionRolledbackException: Transaction was rolled
back, presumably because setRollbackOnly was called during a
synchronization: Unable to commit: transaction marked for rollback:
Transaction was rolled back, presumably because setRollbackOnly was called
during a synchronization: Unable to commit: transaction marked for rollback
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:147)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:76)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:284)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.access$100(EjbTimerServiceImpl.java:43)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl$EjbTimeoutTimerTask$1.run(EjbTimerServiceImpl.java:350)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.transaction.TransactionRolledbackException: Transaction was
rolled back, presumably because setRollbackOnly was called during a
synchronization: Unable to commit: transaction marked for rollback
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:146)
... 10 more
03 Dec 2008 15:04:17,531 WARN [pool-4-thread-2] (Timer.java:62) - Exception
from ejbTimeout on limores-core-internal.jar/AutoErrorCheckBean
org.apache.openejb.ApplicationException:
javax.transaction.TransactionRolledbackException: Transaction was rolled
back, presumably because setRollbackOnly was called during a
synchronization: Unable to commit: transaction marked for rollback:
Transaction was rolled back, presumably because setRollbackOnly was called
during a synchronization: Unable to commit: transaction marked for rollback
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:147)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:76)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.ejbTimeout(EjbTimerServiceImpl.java:284)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl.access$100(EjbTimerServiceImpl.java:43)
at
org.apache.openejb.core.timer.EjbTimerServiceImpl$EjbTimeoutTimerTask$1.run(EjbTimerServiceImpl.java:350)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.transaction.TransactionRolledbackException: Transaction was
rolled back, presumably because setRollbackOnly was called during a
synchronization: Unable to commit: transaction marked for rollback
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:146)
... 10 more
when trying to persist :
...
ProbnaTabela1 probnaTabela1 = new ProbnaTabela1();
probnaTabela1.setIme("D");
probnaTabela1Home.persist(probnaTabela1);
...
public void persist(ProbnaTabela1 transientInstance) {
log.debug("persisting ProbnaTabela1 instance");
try {
entityManager.persist(transientInstance);
//entityManager.flush();//commented line
log.debug("persist successful");
} catch (RuntimeException re) {
log.error("persist failed", re);
throw re;
}
}
package net.xxx.persistenceTest.probnaTabela;
// Generated Dec 3, 2008 10:48:54 AM by Hibernate Tools 3.2.2.GA
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
/**
* ProbnaTabela1 generated by hbm2java
*/
@Entity
@Table(name = "ProbnaTabela1", schema = "aaa.bbb")
public class ProbnaTabela1 implements java.io.Serializable {
private static final long serialVersionUID = -2618542290799601293L;
private Integer id;
private String ime;
public ProbnaTabela1() {
}
@Id
@Column(name = "id_1", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.TABLE, generator =
"CUSTOMER_ID")
@TableGenerator(name = "CUSTOMER_ID", table = "counters", pkColumnName =
"CounterName", valueColumnName = "CounterValue", pkColumnValue =
"CUSTOMER_NO", allocationSize = 1)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "ime", length = 1)
public String getIme() {
return this.ime;
}
public void setIme(String ime) {
this.ime = ime;
}
}
problem is with this part of code possible ties to suspend transaction when
determines Id:
...
@GeneratedValue(strategy = GenerationType.TABLE, generator = "CUSTOMER_ID")
@TableGenerator(name = "CUSTOMER_ID", table = "counters", pkColumnName =
"CounterName", valueColumnName = "CounterValue", pkColumnValue =
"CUSTOMER_NO", allocationSize = 1)
...
we run unitils test and it persists succesfully but in Geronimo enviroment
it does not. Here is test log:
31 xxxMySql WARN [main] openjpa.Runtime - The configuration property
named "openjpa.InitializeEagerly" was not recognized and will be ignored,
although the name closely matches a valid property called
"openjpa.InverseManager".
INFO - ConfigurationLoader - Loaded configuration file
unitils-local.properties from user home
INFO - PropertiesDataSourceFactory - Creating data source.
Driver: net.sourceforge.jtds.jdbc.Driver, url:
jdbc:jtds:sqlserver://test-server:1433, user: sa, password: <not shown>
INFO - LocalContainerEntityManagerFactoryBean - Building JPA container
EntityManagerFactory for persistence unit 'xxx'
31 xxx WARN [main] openjpa.Runtime - An error occurred while registering
a ClassTransformer with PersistenceUnitInfo: name 'xxx', root URL
[file:/D:/workspace-eclipse3.4/xxx-core/xxx-core-internal/target/test-classes/].
The error has been consumed. To see it, set your openjpa.Runtime log level
to TRACE. Load-time class transformation will not be available.
78 xxx INFO [main] openjpa.Runtime - Starting OpenJPA 1.2.0
281 xxx INFO [main] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.SQLServerDictionary" (Microsoft SQL Server
09.00.3073 ,jTDS Type 4 JDBC Driver for MS SQL Server and Sybase 1.2.2).
...
DEBUG - ProbnaTabela1Home - persisting ProbnaTabela1
instance
DEBUG - ProbnaTabela1Home - persist successful
INFO - JpaModule - Flushing entity manager
org.apache.openjpa.persistence.EntityManagerImpl@18e8fe0
9234 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 7080114>
executing prepstmnt 30318742 SELECT COUNTERVALUE FROM Address.dbo.counters
WITH (UPDLOCK) WHERE COUNTERNAME = ? [params=(String) CUSTOMER_NO]
9250 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 7080114> [16
ms] spent
9250 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 7080114>
executing prepstmnt 17474178 UPDATE Address.dbo.counters SET COUNTERVALUE =
? WHERE COUNTERNAME = ? AND COUNTERVALUE = ? [params=(long) 8673087,
(String) CUSTOMER_NO, (long) 8673086]
9250 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 7080114> [0 ms]
spent
9281 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 24597416>
executing prepstmnt 6823352 INSERT INTO Address.dbo.ProbnaTabela1 (id_1,
ime) VALUES (?, ?) [params=(int) 8673086, (String) D]
9281 xxx TRACE [main] openjpa.jdbc.SQL - <t 9505547, conn 24597416> [0
ms] spent
Please help,
David
enviroment:
MSSQL, openjpa-1.2.0.jar, Geronimo 2.1.4-SNAPSHOT
Version 2.1.4-SNAPSHOT Build 2008.09.03-14:17:48.870-0400 Start Time Wed
Dec 03 11:27:44 CET 2008 Up Time 4 hours 9 minutes 37 seconds
Operating System Architecture x86 Name Windows XP Version 5.1 Patch
Level Service Pack 3 Locale en_US
JVM Java Version 1.6.0_10-ea Java Vendor Sun Microsystems Inc. Node
david/192.168.0.63
Re: @GeneratedValue(strategy = GenerationType.TABLE... : org.apache.openjpa.persistence.PersistenceException: The Transaction Synchronization Registry can not suspend the current transaction
Posted by David Ljuba <lj...@gmail.com>.
It works now but there could be problem with transactions.
I made change in persistence.xml:
from
<jta-data-source>xxx</jta-data-source>
to
<non-jta-data-source>xxx</non-jta-data-source>
Could be this problem? After all there is transaction, but maybe there are
not distributed transactions needed for other services. Here is log
04 Dec 2008 15:18:09,296 INFO [pool-4-thread-6] (Transaction.java:70) - TX
Required: Started transaction
org.apache.geronimo.transaction.manager.TransactionImpl@11bddeb
04 Dec 2008 15:18:09,312 DEBUG [pool-4-thread-6]
(net.xxx.persistenceTest.probnaTabela.ProbnaTabela1Home.java:66) -
persisting ProbnaTabela1 instance
04 Dec 2008 15:18:09,406 DEBUG [pool-4-thread-6]
(net.xxx.persistenceTest.probnaTabela.ProbnaTabela1Home.java:66) - persist
successful
04 Dec 2008 15:18:09,406 INFO [pool-4-thread-6] (Transaction.java:70) - TX
Required: Committing transaction
org.apache.geronimo.transaction.manager.TransactionImpl@11bddeb
83531 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
18496393> executing prepstmnt 16150401
SELECT COUNTERVALUE
FROM xxx.xxx.counters WITH (UPDLOCK)
WHERE COUNTERNAME = ?
[params=(String) CUSTOMER_NO]
83531 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
18496393> [0 ms] spent
83531 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
18496393> executing prepstmnt 12455974
UPDATE xxx.xxx.counters
SET COUNTERVALUE = ?
WHERE COUNTERNAME = ? AND COUNTERVALUE = ?
[params=(long) 8673337, (String) CUSTOMER_NO, (long) 8673287]
83546 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
18496393> [15 ms] spent
83546 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
4865623> executing prepstmnt 26306486
INSERT INTO xxx.xxx.ProbnaTabela1 (id_1, ime)
VALUES (?, ?)
[params=(int) 8673287, (String) D]
83546 xxx TRACE [pool-4-thread-6] openjpa.jdbc.SQL - <t 10235390, conn
4865623> [0 ms] spent
Re: @GeneratedValue(strategy = GenerationType.TABLE... : org.apache.openjpa.persistence.PersistenceException: The Transaction Synchronization Registry can not suspend the current transaction
Posted by David Ljuba <lj...@gmail.com>.
Thank you for reply,
persistence.xml -s are same but with only one difference
transaction-type="JPA" and transaction-type="RESOURCE_LOCAL".
I tried to change this property for geronimo (JPA -> RESOURCE_LOCAL) but
same error is shown, and if I change in test persistence.xml (RESOURCE_LOCAL
-> JPA) then I got this error.
org.springframework.transaction.CannotCreateTransactionException: Could not
open JPA EntityManager for transaction; nested exception is
<openjpa-1.2.0-r422266:683325 fatal user error>
org.apache.openjpa.persistence.InvalidStateException: Could not perform
automatic lookup of EJB container's javax.transaction.TransactionManager
implementation. Please ensure that you are running the application from
within an EJB 1.1 compliant EJB container, and then set the
org.apache.openjpa.ManagedRuntime property to
Geronimo persistence.xml:
/xxx-core-internal/src/main/resources/META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="xxx" transaction-type="JPA">
<description>ContainerManagedJPA</description>
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>xxx</jta-data-source>
<class>net.xxx.persistenceTest.probnaTabela.ProbnaTabela1</class>
<class>net.xxx.persistence.counter.Counter</class>
<class>net.xxx.persistence.counter.CounterId</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- DBDictionary has a boolean property - storeCharsAsNumbers,
the default is true. -->
<!-- link with solution:
http://www.gg3721.com/list/42/164023.html -->
<!-- stack trace: java.sql.SQLException: The value supplied
cannot be converted to INTEGER. -->
<!-- place made problem: at
org.apache.openjpa.jdbc.sql.DBDictionary.getInt(DBDictionary.java:653)
at
org.apache.openjpa.jdbc.sql.DBDictionary.getChar(DBDictionary.java:555) -->
<!-- openjpa code made problem: if (storeCharsAsNumbers) return
(char) getInt(rs, column); -->
<property name="openjpa.jdbc.DBDictionary"
value="storeCharsAsNumbers=false"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="false"
/>
<property name="openjpa.Log" value="SQL=TRACE"></property>
<property name="openjpa.ConnectionFactoryProperties"
value="PrettyPrint=true,
PrettyPrintLineLength=72"></property>
<!--<property name="openjpa.InitializeEagerly"
value="true"></property>-->
</properties>
</persistence-unit>
Unitils test persistence.xml:
/xxx-core-internal/src/test/resources/META-INF/persistence.xml
<?xml version="1.0" encoding="utf-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="xxx" transaction-type="RESOURCE_LOCAL">
<description>ContainerManagedJPA</description>
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>xxx</jta-data-source>
<class>net.xxx.persistenceTest.probnaTabela.ProbnaTabela1</class>
<class>net.xxx.persistence.counter.Counter</class>
<class>net.xxx.persistence.counter.CounterId</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- DBDictionary has a boolean property - storeCharsAsNumbers,
the default is true. -->
<!-- link with solution:
http://www.gg3721.com/list/42/164023.html -->
<!-- stack trace: java.sql.SQLException: The value supplied
cannot be converted to INTEGER. -->
<!-- place made problem: at
org.apache.openjpa.jdbc.sql.DBDictionary.getInt(DBDictionary.java:653)
at
org.apache.openjpa.jdbc.sql.DBDictionary.getChar(DBDictionary.java:555) -->
<!-- openjpa code made problem: if (storeCharsAsNumbers) return
(char) getInt(rs, column); -->
<property name="openjpa.jdbc.DBDictionary"
value="storeCharsAsNumbers=false"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="false"
/>
<property name="openjpa.Log" value="SQL=TRACE"></property>
<property name="openjpa.ConnectionFactoryProperties"
value="PrettyPrint=true, PrettyPrintLineLength=72"></property>
<!--<property name="openjpa.InitializeEagerly"
value="true"></property>-->
</properties>
</persistence-unit>
</persistence>
Here is test class:
package net.xxx.serviceTest.probnaTabela;
import net.xxx.persistenceTest.probnaTabela.ProbnaTabela1;
import net.xxx.persistenceTest.probnaTabela.ProbnaTabela1Home;
import net.xxx.persistenceTest.probnaTabela.ProbnaTabela1HomeLocal;
import org.junit.Before;
import org.junit.Test;
import org.unitils.UnitilsJUnit4;
import org.unitils.orm.jpa.JpaUnitils;
import org.unitils.orm.jpa.annotation.JpaEntityManagerFactory;
@JpaEntityManagerFactory(persistenceUnit = "xxx", configFile =
"META-INF/persistence.xml")
public class ProbnaTabela1Test extends UnitilsJUnit4 {
private ProbnaTabela1HomeLocal probnaTabela1Home;
@Before
public void setUp() {
probnaTabela1Home = new ProbnaTabela1Home();
JpaUnitils.injectEntityManagerInto(probnaTabela1Home);
}
@Test
public void testPersist() {
ProbnaTabela1 probnaTabela1 = new ProbnaTabela1();
probnaTabela1.setIme("D");
probnaTabela1Home.persist(probnaTabela1);
}
}
David
On Wed, Dec 3, 2008 at 6:52 PM, David Jencks <da...@yahoo.com> wrote:
> From some of this info I have some doubts that you have configured openjpa
> to use geronimo connection pools. I'm pretty sure the problem comes from
> using the same datasource for both jta and non-jta work.
> Can you please show your persistence.xml, tell us where it is, and show how
> the jta and non-jta datasources are configured?
>
> thanks
> david jencks
>
> On Dec 3, 2008, at 6:45 AM, David Ljuba wrote:
>
> we have this symptom:
> Generates exception:
> ...
> 18047 xxx INFO [RMI TCP Connection(216)-192.168.0.63] openjpa.Runtime
> - Starting OpenJPA 1.2.0
> 18344 xxx INFO [RMI TCP Connection(216)-192.168.0.63]
> openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.SQLServerDictionary" (Microsoft SQL Server
> 09.00.3073 ,jTDS Type 4 JDBC Driver for MS SQL Server and Sybase 1.2.2).
> ...
>
> <snip>
>
Re: @GeneratedValue(strategy = GenerationType.TABLE... : org.apache.openjpa.persistence.PersistenceException: The Transaction Synchronization Registry can not suspend the current transaction
Posted by David Jencks <da...@yahoo.com>.
From some of this info I have some doubts that you have configured
openjpa to use geronimo connection pools. I'm pretty sure the problem
comes from using the same datasource for both jta and non-jta work.
Can you please show your persistence.xml, tell us where it is, and
show how the jta and non-jta datasources are configured?
thanks
david jencks
On Dec 3, 2008, at 6:45 AM, David Ljuba wrote:
> we have this symptom:
> Generates exception:
> ...
> 18047 xxx INFO [RMI TCP Connection(216)-192.168.0.63]
> openjpa.Runtime - Starting OpenJPA 1.2.0
> 18344 xxx INFO [RMI TCP Connection(216)-192.168.0.63]
> openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.SQLServerDictionary" (Microsoft SQL
> Server 09.00.3073 ,jTDS Type 4 JDBC Driver for MS SQL Server and
> Sybase 1.2.2).
> ...
>
<snip>