Problem org.hibernate.PersistentObjectException: detached en
gianfeng Sep 15, 2005 2:25 AMHello, please see my persistent classes below:
1-User.java
package com.liefallow.member.entiy; import java.io.Serializable; import javax.persistence.*; @Entity @Table(name = "user") public class User implements Serializable { private static final long serialVersionUID = -4063362489253613429L; private int userId; private String userName; //Other variables public User() { } @Id(generate = GeneratorType.AUTO) @Column(name = "userId") public int getUserId() { return userId; } /** * @param userId * The userId to set. */ public void setUserId(int userId) { this.userId = userId; } /** * @return Returns the userName. */ public String getUserName() { return userName; } /** * @param userName * The userName to set. */ public void setUserName(String userName) { this.userName = userName; } //other getter and setter methods }
2-RemoteOperate.java
import javax.ejb.Remote; import com.liefallow.member.entiy.User; @Remote public interface RemoteOperate { public void addUser(User user); }
3-OperateBean.java
@Stateless @Local( { Operate.class }) @Remote( { RemoteOperate.class }) public class OperateBean implements Operate, RemoteOperate { @PersistenceContext(unitName = "opt") protected EntityManager em; public void addUser(User user) { em.persist(user); }
4-Test.java
public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) { Hashtable env = new Hashtable(); env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); env.put("java.naming.provider.url", "jnp://localhost:1099"); RemoteOperate opt = null; try { InitialContext ctx = new InitialContext(env); System.out.println(RemoteOperate.class.getName()); opt = (RemoteOperate) ctx.lookup(RemoteOperate.class.getName()); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } User user = new User(); user.setUserId(1); user.setUserName("gianfeng"); user.setPasswd("123456"); user.setRegTime("2005-09-14"); user.setEmail("gianfeng@qianren.com"); user.setRegIp("127.0.0.1"); user.setSex("?"); opt.addUser(user); System.out.println("ss"); } }
I get the exception :
2005-09-15 13:46:11,342 INFO [STDOUT] org.hibernate.PersistentObjectException: detached entity passed to persist: com.liefallow.member.entiy.User at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:531) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:129) at org.jboss.ejb3.entity.InjectedEntityManager.persist(InjectedEntityManager.java:92) at com.liefallow.member.service.OperateBean.addUser(OperateBean.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:99) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:33) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:66) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:134) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:72) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:39) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:93) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:183) at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107) at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:69) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:325) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:201) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:259) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:313) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:147)
Can you suggect the way to solver this problem?thanks.