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.
 
     
    