Java persist方法在尝试持久化新对象时提供PersistentObjectException

Java persist方法在尝试持久化新对象时提供PersistentObjectException,java,hibernate,persist,Java,Hibernate,Persist,在我下面的代码中,我试图持久化新创建的Employee实例,它引发persistantobject异常: public class abc { public static void main(String as[]) { Configuration cfg= new Configuration();System.out.println("--------------got cfg object-----------"); cfg = cfg.configu

在我下面的代码中,我试图持久化新创建的Employee实例,它引发persistantobject异常:

public class abc
{
   public static void main(String as[])
   {
       Configuration cfg= new Configuration();System.out.println("--------------got cfg object-----------");
       cfg = cfg.configure("hibernate.cfg.xml");System.out.println("--------------hbm loaded into cfg-----------");
       SessionFactory sf= cfg.buildSessionFactory();
       Employee item3 = new Employee();
       item3.setEid(420);
       Session session = sf.openSession(); 
       Employee item = (Employee) session.get(Employee.class, new Integer(12));
      // item.setFname("myaim1"); 
      // session.save(item);

     // Integer a= (Integer)session.save(item3);
       //session.persist(item3);
       Transaction tx = session.beginTransaction();
       session.persist(item3);
        tx.commit(); 
       session.close(); // end of first session, item is detached  

   }}
例外情况是:

-------------hbm loaded into cfg-----------
Hibernate: select employee0_.eid as eid0_0_, employee0_.first_name as first2_0_0_, employee0_.last_name as last3_0_0_, employee0_.email as email0_0_ from EMPLOYEE3 employee0_ where employee0_.eid=?
Exception in thread "main" org.hibernate.PersistentObjectException: detached entity passed to persist: Employee
    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.firePersist(SessionImpl.java:618)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
    at abc.main(abc.java:23)
我使用的是hibernate core 4.3版。
出了什么问题?

在这里使用
persist()
有什么特别的原因吗? 为什么不使用
save()

大概是这样的:

Session session = HibernateUtil.getSessionFactory().openSession();

session.beginTransaction();
session.save(item3);
session.getTransaction().commit();

最可能的错误是在
item3.setEid(420)行。我猜您一定是在使用
@Id
@GeneratedValue
以及'SEQUENCE/IDENTITY/TABLE/AUTO'之一。如果是这样的话,您可以将这一行注释为try


如果你继续面对同样的问题,发布
Employee
类将有助于进一步调试它。

你能在
Employee
类上显示
@Id
属性的映射吗?我使用了一个save,它触发了一个insert-ahile提交。没关系。但persist保证了事务提交时的每个查询。所以我试着坚持,但它抛出了这个例外我在hbm文件中使用自动增量生成器,保存工作正常,不知道坚持出了什么问题。从理论上讲,它应该是有效的。@jayendrabhatt请发布
Employee
类。顺便问一下,您是否尝试注释掉
item3.setEid(420)?@jayendrabhatt对于Employee类,如果您没有在Employee类上使用注释,请包含相关的hbm文件。另外,您测试的是哪个数据库?