You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Łukasz Budnik <lu...@gmail.com> on 2008/02/19 17:23:28 UTC
G2.1.0 problem with OpenJPA
Hi!
There is some kind of error in OpenJPA used in G 2.1.0 or... in DB2
Tranql wrapper.
Let's say I have a very simple entity class with following id field:
@Id
@SequenceGenerator(name = "MessageSeq", sequenceName = "message_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MessageSeq")
@Column(name = "ID_MESSAGE", nullable = false)
private Long idMessage;
the above class works fine with OpenJPA 1.0.1 in a stand-alone application.
I can persist objects, and that the new ID is taken from the
"message_seq" sequence.
BUT, the very same class throws this error when running on Geronimo 2.1.0:
102296 NuntiusPU TRACE [http-0.0.0.0-8080-1] openjpa.jdbc.SQL - <t
16171097, conn 33348549> [140 ms] spent
17:07:03,640 WARN [Transaction] Unexpected exception from
beforeCompletion; transaction will roll back
<openjpa-1.0.1-r420667:592145 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.NativeJDBCSeq.nextInternal(NativeJDBCSeq.java:209)
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:1892)
at
org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
My shot is that there must be something wrong with the AbstractJDBCSeq...
If I comment-out the:
@SequenceGenerator(name = "MessageSeq", sequenceName = "message_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MessageSeq")
and assign the ID manually it works, but this is not what I want.
Any ideas?
best regards
Łukasz
Re: G2.1.0 problem with OpenJPA
Posted by David Jencks <da...@yahoo.com>.
In my experience it's necessary to supply a non-jta-datasource as
well as a jta-datasource. Be sure the non-jta-datasource has <no-
transaction> in the plan. You can't set this using the admin console
database pool wizard. You can look at the plan in system-database
for an example.
If this doesn't help please show your persistence.xml
thanks
david jencks
On Feb 19, 2008, at 8:23 AM, Łukasz Budnik wrote:
> Hi!
>
> There is some kind of error in OpenJPA used in G 2.1.0 or... in DB2
> Tranql wrapper.
>
> Let's say I have a very simple entity class with following id field:
>
> @Id
> @SequenceGenerator(name = "MessageSeq", sequenceName = "message_seq")
> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
> "MessageSeq")
> @Column(name = "ID_MESSAGE", nullable = false)
> private Long idMessage;
>
> the above class works fine with OpenJPA 1.0.1 in a stand-alone
> application.
> I can persist objects, and that the new ID is taken from the
> "message_seq" sequence.
>
> BUT, the very same class throws this error when running on Geronimo
> 2.1.0:
>
> 102296 NuntiusPU TRACE [http-0.0.0.0-8080-1] openjpa.jdbc.SQL - <t
> 16171097, conn 33348549> [140 ms] spent
> 17:07:03,640 WARN [Transaction] Unexpected exception from
> beforeCompletion; transaction will roll back
> <openjpa-1.0.1-r420667:592145 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.NativeJDBCSeq.nextInternal
> (NativeJDBCSeq.java:209)
> 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:1892)
> at
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion
> (BrokerImpl.java:1770)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompleti
> on(TransactionImpl.java:514)
>
> My shot is that there must be something wrong with the
> AbstractJDBCSeq...
>
> If I comment-out the:
>
> @SequenceGenerator(name = "MessageSeq", sequenceName = "message_seq")
> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
> "MessageSeq")
>
> and assign the ID manually it works, but this is not what I want.
>
> Any ideas?
>
> best regards
> Łukasz