2016-02-06 2 views
1

Я новичок в hibernate. Я разработал пример отношения OneToMany, но я вижу следующий пример. Пожалуйста, помогите мне, как решить ниже ошибку?Исходное создание SessionFactory failed.org.hibernate.AnnotationException: @OneToOne или @ManyToOne на net.viralpatel.hibernate.Employee.department

INFO: Bind entity net.viralpatel.hibernate.Employee on table EMPLOYEE 
Initial SessionFactory creation failed.org.hibernate.AnnotationException: @OneToOne or @ManyToOne on net.viralpatel.hibernate.Employee.department references an unknown entity: net.viralpatel.hibernate.Department 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at net.viralpatel.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:18) 
    at net.viralpatel.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at net.viralpatel.hibernate.Main.main(Main.java:12) 
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on net.viralpatel.hibernate.Employee.department references an unknown entity: net.viralpatel.hibernate.Department 
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81) 
    at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:499) 
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:304) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) 
    at net.viralpatel.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:15) 
    ... 2 more 

Я разработал код до сих пор:

@Entity 
@Table(name="EMPLOYEE") 
public class Employee { 
    @Id 
    @GeneratedValue 
    @Column(name="employee_id") 
    private Long employeeId; 

    @Column(name="firstname") 
    private String firstname; 

    @Column(name="lastname") 
    private String lastname; 

    @Column(name="birth_date") 
    private Date birthDate; 

    @Column(name="cell_phone") 
    private String cellphone; 

    @ManyToOne 
    @JoinColumn(name="departmentId") 
    private Department department; 


    public Employee(){} 

    public Employee(String firstname, String lastname, String phone) { 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.birthDate = new Date(System.currentTimeMillis()); 
     this.cellphone = phone; 
    } 
    // setters and getters 
} 

Отдел

public class Department { 
    @Id 
    @GeneratedValue 
    @Column(name="DEPARTMENT_ID") 
    private Long departmentId; 
    @Column(name="DEPT_NAME") 
    private String departmentName; 
    @OneToMany 
    private List<Employee> employees; 

    public Long getDepartmentId() { 
     return departmentId; 
    } 

    public void setDepartmentId(Long departmentId) { 
     this.departmentId = departmentId; 
    } 

    public String getDepartmentName() { 
     return departmentName; 
    } 

    public void setDepartmentName(String departmentName) { 
     this.departmentName = departmentName; 
    } 

    public List<Employee> getEmployees() { 
     return employees; 
    } 

    public void setEmployees(List<Employee> employees) { 
     this.employees = employees; 
    } 
} 

HibernateUtil

public class HibernateUtil { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      // Create the SessionFactory from hibernate.cfg.xml 
      return new AnnotationConfiguration().configure().buildSessionFactory(); 
     } catch (Throwable ex) { 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

Главная

public class Main { 

    public static void main(String[] args) { 

     SessionFactory sf = HibernateUtil.getSessionFactory(); 
     Session session = sf.openSession(); 
     session.beginTransaction(); 

     Department department = new Department(); 
     department.setDepartmentName("Sales"); 

     Employee emp1 = new Employee("Nina", "Mayers", "111"); 
     Employee emp2 = new Employee("Tony", "Almeida", "222"); 

     department.setEmployees(new ArrayList<Employee>()); 
     department.getEmployees().add(emp1); 
     department.getEmployees().add(emp2); 

     session.save(department); 

     session.getTransaction().commit(); 
     session.close(); 
    } 
} 
+0

Вы комментировали 'Департамент' с' @ Entity'? – Reimeus

ответ

0

Отметить класс отдела как сущность с аннотацией @Entity.

Смежные вопросы