2017-02-08 17 views
1

手動であなたにIDを割り当てられたので、それが教育org.hibernate.PersistentObjectException:永続化するために渡されたデタッチエンティティ:com.hibernate.dto.Employee

@Entity 
    public class Employee { 
     @Id 
     @GeneratedValue 
     private int empId; 
     private String empName; 
     @Temporal(TemporalType.DATE) 
     private Date empDob; 
     @Temporal(TemporalType.TIMESTAMP) 
     private Date empDoj; 
     private Long empPhone; 
     @OneToMany(cascade=CascadeType.PERSIST) 

     //setter and getters 
} 

@Entity 
public class Education { 
    @Id 
    @GeneratedValue 
    private Integer aadharNum; 
    private String collegeName; 
    private String schoolName; 
    private String companyName; 

    // setter and getter 

} 
     public class HibernateTest { 
       public static void main(String[] args) { 
       try { 
        Employee employee=new Employee(); 
        employee.setEmpName("Sri"); 
        employee.setEmpId(7664); 
        employee.setEmpDob(new java.util.Date()); 
        employee.setEmpDoj(new java.util.Date()); 
        employee.setEmpPhone(8102087655l); 
        Education education=new Education(); 
        education.setSchoolName("Neo Royal School"); 
        education.setCollegeName("IIT Gu"); 
        education.setCompanyName("Insys"); 
        Education education2=new Education(); 
        education2.setSchoolName("Royal School"); 
        education2.setCollegeName("IIT Hyd"); 
        education2.setCompanyName("IM"); 
        employee.getEducation().add(education); 
        employee.getEducation().add(education2); 

    SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory(); 
        Session session=sessionFactory.openSession(); 
        session.beginTransaction(); 
        session.persist(employee); 
        session.getTransaction().commit(); 
        session.close(); 
     } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

答えて

0

とOneToManyの関係で以下のように私は、Employeeクラスを持っていますまだHibernateによって管理されていない従業員エンティティ。 これを削除するとうまくいくはずですemployee.setEmpId(7664); HibernateはIDを自動生成します(@GeneratedValueのため)。

0

問題は、empIdでは@GeneratedValueアノテーションを使用していることです。これは、あなたが新しいエンティティを永続化されている場合、IDフィールドは空白のままにする必要があることを意味し、あなたがでそれを埋めるかのJPAプロバイダを聞かせする必要があります。

だから、どちらか@GeneratedValue

@Id 
private int empId; 

を削除するか、または行います明示的にempIdを設定しない

+0

訂正していただきありがとうございます。 – Srinu

+0

@johnは修正のためにハンクスを働かせました。 – Srinu

+0

彼の答えを受け入れてください –

関連する問題