2017-06-10 47 views
1

org.hibernate.MappingException:无法确定类型: com.qoobico.remindme.server.entity.Group,在表:学生,为 列:[org.hibernate.mapping.Column(group)]org.hibernate.MappingException:无法确定类型:

我读过所有帖子abot这个例外,但我不能解决这个问题。似乎一切都达是allrighrt,但我仍然得到它:

Group.java

@Entity 
@Table(name = "party") 
public class Group { 
@Id 
@GeneratedValue(generator = "increment") 
@GenericGenerator(name="increment", strategy = "increment") 
private int id_group; 

@Column(name = "groupName", nullable = false) 
private String groupName; 

@Column(name = "tutorName", nullable = false) 
private String tutorName; 


@OneToMany(targetEntity = Student.class, 
      mappedBy = "group", 
      cascade = CascadeType.ALL, 
      fetch = FetchType.EAGER) 
private List<Student> student; 


public Group(){ 

} 


public int getId_group() { 
    return id_group; 
} 

public void setId_group(int id_group) { 
    this.id_group = id_group; 
} 

public String getGroupName() { 
    return groupName; 
} 

public void setGroupName(String groupName) { 
    this.groupName = groupName; 
} 

public String getTutorName() { 
    return tutorName; 
} 

public void setTutorName(String tutorName) { 
    this.tutorName = tutorName; 
} 


public List<Student> getStudent() { 
    return student; 
} 

public void setStudent(List<Student> student) { 
    this.student = student; 
} 

}

Student.java

@Entity 
@Table(name ="student") 
public class Student { 

    @Id 
    @GeneratedValue(generator = "increment") 
    @GenericGenerator(name="increment", strategy = "increment") 
    private int id_student; 


    @Column(name = "studentName", nullable = false) 
    private String studentName; 

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

    @Column(name = "group") 
    private Group group; 

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

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

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

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

    public Student(){ 
    } 

    public int getId_student() { 
     return id_student; 
    } 

    public void setId_student(int id_student) { 
     this.id_student = id_student; 
    } 

    public String getStudentName() { 
     return studentName; 
    } 

    public void setStudentName(String studentName) { 
     this.studentName = studentName; 
    } 

    public String getFormOfAducation() { 
     return formOfAducation; 
    } 

    public void setFormOfAducation(String formOfAducation) { 
     this.formOfAducation = formOfAducation; 
    } 

    @ManyToOne 
    @JoinColumn(name ="id_group") 
    public Group getGroup() { 
     return group; 
    } 

    public void setGroup(Group group) { 
     this.group = group; 
    } 

    public String getStudentCourse() { 
     return studentCourse; 
    } 

    public void setStudentCourse(String studentCourse) { 
     this.studentCourse = studentCourse; 
    } 

    public String getStudentSpecializatio() { 
     return studentSpecializatio; 
    } 

    public void setStudentSpecializatio(String studentSpecializatio) { 
     this.studentSpecializatio = studentSpecializatio; 
    } 

    public String getStudentBookName() { 
     return studentBookName; 
    } 

    public void setStudentBookName(String studentBookName) { 
     this.studentBookName = studentBookName; 
    } 

    public String getStudentGender() { 
     return studentGender; 
    } 

    public void setStudentGender(String studentGender) { 
     this.studentGender = studentGender; 
    } 
} 

回答

1

映射在Student物业group应该是:

@ManyToOne 
@JoinColumn(name = "group_id") 
private Group group; 

您不能在字段和属性级别混合注释。将这些注释移到该字段,事情将按照您的预期工作。

+0

但是我有它,但这样的: ' @ManyToOne @JoinColumn(名称= “id_group”) 公共组getGroup(){ 返回组; } ' –

+0

没错,但你不能混合字段和属性级别的注释。文档很清楚,您应该选择一种策略来注释您的类并在实体层次结构中保持一致,否则您的持久性提供程序将忽略/跳过某些注释。 Hibernate根据您放置@ @ Id的位置来确定哪种策略。鉴于你把它放在了现场,所有的注解应该在现场级别,而不是在getter/setter上。 – Naros

+0

谢谢,它的工作原理! –

相关问题