首页 > 解决方案 > Hibernate - 映射问题

问题描述

我遇到了休眠映射的问题,

我的数据库被设计成一对多。

门课程/教师/学生,可以有多个 寄存器

几乎所有实体类都是相同的关系, 在此处输入图像描述

因此,如果我们以学生为例,这将是我的映射

import java.util.List;
import javax.persistence.*;


@Entity //here you define your class as entity which means is connected to the database 
@Table(name="students") //here you are referring the SQL table 

public class Student {
    @Id //to define it is a primary key
    @Column(name="student_id")  // name must be exact as the column in SQL
    private String studentID;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName; 

    @Column(name="date_of_birth")
    private String dateOfBirth;

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

    //Establishing Mapping 

    @OneToMany(mappedBy="student_id",
               cascade=CascadeType.ALL,targetEntity = Student.class, fetch = FetchType.LAZY)
     List <Register> registers;

这将是注册类,它将是注册表的实体。

import javax.persistence.*;


@Entity //here you define your class as entity which means is connected to the database 
@Table(name="REGISTRATION") //here you are referring the SQL table

public class Register {

    @Column(name="course_id")
    String course_id;

    @Column(name="course_name")
    String course_name;

    @Column(name="schedule")
    String schedule;

    @Id
    @Column(name="student_id")
    String student_id;

    @Column(name="employee_id")
    String employee_id;

    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="students",joinColumns=@JoinColumn(name="student_id"),inverseJoinColumns=@JoinColumn(name="student_id"))
    Student student;


    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="courses",joinColumns=@JoinColumn(name="course_id"),inverseJoinColumns=@JoinColumn(name="course_id"))
    Course course;

    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="teacher",joinColumns=@JoinColumn(name="employee_id"),inverseJoinColumns=@JoinColumn(name="employee_id"))
    Teacher teacher;

我的输出是:

Exception in thread "AWT-EventQueue-0" org.hibernate.AnnotationException: @OneToOne or @ManyToOne on model.Register.course references an unknown entity: model.Course
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:97)

任何形式的帮助将不胜感激。

标签: hibernate

解决方案


推荐阅读