2015-04-03 17 views
0

有一個員工課程,他有一套他所知道的語言。如下所述的錯誤

錯誤:異常在線程 「主」 org.hibernate.MappingException: 無法確定類型:java.util.Set中,在表中:Employee_Table, 爲列:[org.hibernate.mapping.Column (語言)]

Employee.java

package Mapping.Collection.Set; 

    import java.util.*; 

    import javax.persistence.*; 
    @Entity 
    @Table(name="Employee_Table") 
    public class Employee { 
     @Id 
     @GeneratedValue(strategy=GenerationType.AUTO) 
     private int empId; 
     @Column(name="EMP_NAME",nullable=false) 
     private String empName; 
     public int getEmpId() { 
      return empId; 
     } 
     public void setEmpId(int empId) { 
      this.empId = empId; 
     } 
     public String getEmpName() { 
      return empName; 
     } 
     public void setEmpName(String empName) { 
      this.empName = empName; 
     } 
     public int getSalary() { 
      return salary; 
     } 
     public void setSalary(int salary) { 
      this.salary = salary; 
     } 
     private int salary; 


     @ElementCollection(targetClass=String.class) 
     @JoinColumn(name="Languages_Known") 
     private Set<String> languages=new HashSet<>(); 

     public Set<String> getLanguages() { 
      return languages; 
     } 
     public void setLanguages(Set<String> languages) { 
      this.languages = languages; 
     } 




    } 


    TestMain.java 
    package Mapping.Collection.Set; 

    import org.hibernate.Session; 
    import org.hibernate.SessionFactory; 
    import org.hibernate.Transaction; 
    import org.hibernate.cfg.AnnotationConfiguration; 

    public class TestMain { 

     /** 
     * @param args 
     */ 
     public static void main(String[] args) { 
      Employee emp=new Employee(); 
      emp.setEmpId(1); 
      emp.setEmpName("Shrini Jaiswal"); 
      emp.setSalary(10000000); 
      emp.getLanguages().add("Hindi"); 
      emp.getLanguages().add("English"); 
      SessionFactory factory=new AnnotationConfiguration().configure().buildSessionFactory(); 
      Session session=factory.openSession(); 
      Transaction tx=session.beginTransaction(); 
      tx.begin(); 
      session.save(emp); 
      tx.commit(); 
       session.close(); 
     } 

    } 
+0

Missing a @CollectionTable – 2015-04-03 16:36:17

+4

爲了增加獲得答案的機會[編寫一個總結特定問題的標題](http://stackoverflow.com/help/how-to-ask) – 2015-04-03 16:38:11

回答

1

在Hibernate註釋,@ElementCollection是它獲取從另一個表中的列的值,而不映射兩個表的功能。

你應該有語言的列表中另一個表,那麼只有你用這樣的..

@ElementCollection 
@CollectionTable(name="languages", [email protected](name="empId")) 
private Set<String> languages; 

read this後獲取更多信息。