Return-Path: X-Original-To: apmail-openjpa-users-archive@minotaur.apache.org Delivered-To: apmail-openjpa-users-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0164C10ED2 for ; Thu, 21 Nov 2013 15:17:43 +0000 (UTC) Received: (qmail 62783 invoked by uid 500); 21 Nov 2013 15:17:42 -0000 Delivered-To: apmail-openjpa-users-archive@openjpa.apache.org Received: (qmail 62297 invoked by uid 500); 21 Nov 2013 15:17:36 -0000 Mailing-List: contact users-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@openjpa.apache.org Delivered-To: mailing list users@openjpa.apache.org Received: (qmail 62247 invoked by uid 99); 21 Nov 2013 15:17:34 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Nov 2013 15:17:34 +0000 X-ASF-Spam-Status: No, hits=1.7 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of curtisr7@gmail.com designates 209.85.214.178 as permitted sender) Received: from [209.85.214.178] (HELO mail-ob0-f178.google.com) (209.85.214.178) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Nov 2013 15:17:29 +0000 Received: by mail-ob0-f178.google.com with SMTP id uz6so3895156obc.37 for ; Thu, 21 Nov 2013 07:17:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=OTbEEKQJ5Kihu2Tpfr8NUr3w0EQcceUyx6SC0vPpZmA=; b=wP3M8OrKJFhZTOgPmt1x2r/bx2Zg5IfpOZMGngR3G1PWoFIerUPZ4Z77vjkSt42mvu NTsQghEBwdc2kcErwU7efOFJimb2n3bl5gGT+4D+MnIV7WrPkX5Ep+hj3VvNb9dw7Bkz CjxGU2nUYjRUsJfOGsJ4seaZlKR9OToQC0EFnMqJIMGJgRxGc+VndtALyFeNxdhz+Voh bJjafoMKJ17xkRsR8Z8Mkwcyx8WC0jtV5p1uCdbDN7klzCvMQRkX8PSsAdflilXI2FMI nlGf+K67ftvHHbMGvGUW7uRvmmIsHMh7M3DG3w6Pt79LyJtqBN9t/oMwOd+TnXDwi/Qn KlKg== MIME-Version: 1.0 X-Received: by 10.60.51.7 with SMTP id g7mr6159894oeo.6.1385047028713; Thu, 21 Nov 2013 07:17:08 -0800 (PST) Received: by 10.60.17.10 with HTTP; Thu, 21 Nov 2013 07:17:08 -0800 (PST) In-Reply-To: References: Date: Thu, 21 Nov 2013 09:17:08 -0600 Message-ID: Subject: Re: PersistenceException while trying to save class with composite primary key (@EmbeddedId/@Embeddable) From: Rick Curtis To: users Content-Type: multipart/alternative; boundary=001a11c308e024cf8704ebb164ba X-Virus-Checked: Checked by ClamAV on apache.org --001a11c308e024cf8704ebb164ba Content-Type: text/plain; charset=ISO-8859-1 Do you know what version of OpenJPA is in TomeEE 1.5.2? On Wed, Nov 20, 2013 at 6:46 PM, Leonardo K. Shikida wrote: > Hi > > My code that was working with tomee 1.5.2 (openEJB 4.5.2 I guess). > > Now I am trying to use tomee 1.6.0 (openEJB 4.6.0 I guess again). > > My class uses a primary key following this structure > > @Entity > public class UserGroupAccess implements Serializable{ > > /** > * > */ > private static final long serialVersionUID = 7233673815582184369L; > > @ManyToOne > @JoinColumn(name="applicationId") > @MapsId("applicationId") > private Application application; > > @ManyToOne > @JoinColumn(name="securityLevelId") > @MapsId("securityLevelId") > private SecurityLevel securityLevel; > > @ManyToOne > @JoinColumn(name="userId") > @MapsId("userId") > private User user; > > @EmbeddedId > private UserGroupAccessPK pk; > (...) > } > > and the primary key > > @Embeddable > public class UserGroupAccessPK implements Serializable{ > > /** > * > */ > private static final long serialVersionUID = 7233673815582184369L; > > public UserGroupAccessPK(long application, > long securityLevel, long user) { > super(); > this.applicationId = application; > this.securityLevelId = securityLevel; > this.userId = user; > } > > public UserGroupAccessPK() { > super(); > } > > private long applicationId; > > private long securityLevelId; > > private long userId; > (...) > } > > These classes are enhanced manually with > org.apache.openjpa.enhance.PCEnhancer > > While trying to run some tests, I've got the following exception > > INFO: Starting OpenJPA 2.3.0-SNAPSHOT > Nov 20, 2013 10:31:32 PM null > INFO: Connected to Oracle version 11.11 using JDBC driver Oracle JDBC > driver version 12.1.0.1.0. > Nov 20, 2013 10:31:39 PM > org.apache.geronimo.transaction.manager.TransactionImpl beforeCompletion > WARNING: Unexpected exception from beforeCompletion; transaction will roll > back > > org.apache.openjpa.persistence.PersistenceException: > org.apache.openjpa.kernel.DetachedStateManager cannot be cast to > org.apache.openjpa.kernel.StateManagerImpl > at > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2027) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:527) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:512) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:413) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262) > at > > org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) > at > > org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:328) > at > org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75) > at > > org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:76) > at > > org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:231) > at > > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:272) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:267) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:90) > at > > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:306) > Caused by: java.lang.ClassCastException: > org.apache.openjpa.kernel.DetachedStateManager cannot be cast to > org.apache.openjpa.kernel.StateManagerImpl > at > > org.apache.openjpa.jdbc.meta.FieldMapping.setPKValueFromMappedByIdField(FieldMapping.java:640) > at > org.apache.openjpa.jdbc.meta.FieldMapping.insert(FieldMapping.java:622) > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.insert(AbstractUpdateManager.java:239) > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.populateRowManager(AbstractUpdateManager.java:166) > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:110) > at > > org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:78) > at > > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:732) > at > > org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2203) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2101) > at > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2019) > ... 17 more > > Exception in thread "main" javax.ejb.EJBTransactionRolledbackException: > Transaction was rolled back, presumably because setRollbackOnly was called > during a synchronization > at > > org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:379) > at > > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:310) > Caused by: javax.transaction.RollbackException: Unable to commit: > transaction marked for rollback > at > > org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272) > at > > org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) > at > > org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:328) > at > org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75) > at > > org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:76) > at > > org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:231) > at > > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:272) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:267) > at > > org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:90) > at > > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:306) > ... 3 more > Caused by: > org.apache.geronimo.transaction.manager.SetRollbackOnlyException: > setRollbackOnly() called. See stacktrace for origin > at > > org.apache.geronimo.transaction.manager.TransactionImpl.setRollbackOnly(TransactionImpl.java:126) > at > > org.apache.geronimo.transaction.manager.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:243) > at > > org.apache.openejb.core.TransactionSynchronizationRegistryWrapper.setRollbackOnly(TransactionSynchronizationRegistryWrapper.java:71) > at > > org.apache.openjpa.ee.RegistryManagedRuntime$TransactionManagerRegistryFacade.setRollbackOnly(RegistryManagedRuntime.java:128) > at > > org.apache.openjpa.ee.RegistryManagedRuntime.setRollbackOnly(RegistryManagedRuntime.java:74) > at > > org.apache.openjpa.ee.AutomaticManagedRuntime.setRollbackOnly(AutomaticManagedRuntime.java:274) > at > > org.apache.openjpa.kernel.BrokerImpl.setRollbackOnlyInternal(BrokerImpl.java:1670) > at > org.apache.openjpa.kernel.BrokerImpl.setRollbackOnly(BrokerImpl.java:1650) > at > > org.apache.openjpa.kernel.DelegatingBroker.setRollbackOnly(DelegatingBroker.java:981) > at > > org.apache.openjpa.persistence.EntityManagerImpl.setRollbackOnly(EntityManagerImpl.java:631) > at > > org.apache.openjpa.persistence.PersistenceExceptions$2.translate(PersistenceExceptions.java:77) > at > > org.apache.openjpa.kernel.BrokerImpl.translateManagedCompletionException(BrokerImpl.java:2089) > at > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2027) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:527) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:512) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:413) > at > > org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262) > ... 13 more > > Any help is welcome. > > Thanks in advance. > > Leo > -- *Rick Curtis* --001a11c308e024cf8704ebb164ba--