Hello, I get the following Exception, when I try to persist an Entity:

14:53:06,841 ERROR [LoginAdminImpl] Fehler beim Speichern der MTIGroup
<openjpa-1.0.0-r420667:568756 nonfatal store error>
org.apache.openjpa.persistence.EntityExistsException: Attempt to persist
detached object "[EMAIL PROTECTED]".
FailedObject: [EMAIL PROTECTED]
        at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2358)
        at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2216)
        at
org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1005)
        at
org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:541)
        at
org.apache.geronimo.persistence.CMPEntityManagerTxScoped.persist(CMPEntityManagerTxScoped.java:83)
        at beans.LoginAdminImpl.createGroup(LoginAdminImpl.java:159)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:618)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129)
        at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67)
        at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:203)
        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)

This is the Entity:

@Entity
@Table(name="group_table")
public class MTIGroup implements Serializable, IMTIGroup {

        private int id = -1;
        private String name = new String();
        private String description = new String();

        public MTIGroup() {
        }

        @TableGenerator(name="GroupIdGen", table="ID_GENERATOR",
pkColumnName="name", valueColumnName="id_value",
                        pkColumnValue="group_table", initialValue=0, 
allocationSize=1)
        @Id
        @GeneratedValue(strategy=GenerationType.TABLE, generator="GroupIdGen")
        public int getId() {
                return id;
        }

        public void setId(int id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public String getDescription() {
                return description;
        }

        public void setDescription(String description) {
                this.description = description;
        }

}

This is the StatefulBean-Method:

        @PersistenceContext(unitName="xxx")
        private EntityManager em;
...
        public void createGroup(MTIGroup group) {
                if (group != null) {
                        try {
                                em.persist(group);
                        }
                        catch (Exception e) {
                                logger.error("Error saving MTIGroup", e);
                        }
                }
        }

This is the stand-alone client code:
                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);
                        TestImplRemote lar = 
(TestImplRemote)ic.lookup("TestImplEJBRemote");
                        MTIGroup g1 = new MTIGroup();
                        g1.setId(2);
                        g1.setName("testGroup");
                        g1.setDescription("Description for testGroup");
                        lar.createGroup(g1);
                } catch (NamingException e) {
                        e.printStackTrace();
                } catch (Exception e) {
                        e.printStackTrace();
                }

and this the persistence.xml part:

        <persistence-unit name="xxx" >
                <jta-data-source>xxxDataSouurce</jta-data-source>
                <class>entities.MTIGroup</class>
                <exclude-unlisted-classes>true</exclude-unlisted-classes>
                <properties>
                        <property name="openjpa.jdbc.SynchronizeMappings" 
value="false" />
                        <property name="openjpa.jdbc.DBDictionary"
value="mysql(SupportsSubselect=true)" />
                        <property name="openjpa.Log" 
value="DefaultLevel=TRACE,SQL=TRACE" />
                        <property name="openjpa.AutoDetach" value="close" />
            <property name="openjpa.DetachState" value="all" />
            <property name="openjpa.DataCache" value="false" />
            <property name="openjpa.Optimistic" value="true" />
            <property name="openjpa.Multithreaded" value="true" />
            <property name="openjpa.TransactionMode" value="managed" />
            <property name="openjpa.NontransactionalRead" value="true" />
            <property name="openjpa.RestoreState" value="all" />
                </properties>
        </persistence-unit>

What goes wrong here? Other Entities can be persisted easily with the same
structure. I've already tried a bean managed transaction, all with the same
result. Can anybody help me and bring to the right direction?

Thank you,
Mark

-- 
View this message in context: 
http://www.nabble.com/EntityExistsException%3A-Attempt-to-persist-detached-object-tf4856534s134.html#a13897173
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.

Reply via email to