java.lang.ExceptionInInitializerError 和 org.hibernate.AnnotationException : mappedBy reference an unknown target entity property:

标签 java hibernate hibernate-onetomany

我使用 Hibernate 逆向工程来创建我的模型及其映射和关系。但是,当我尝试进行简单的选择时,会显示错误。我不知道我的映射出了什么问题。这是两个模型的代码。学生模型是父模型,评估模型是子模型。

评估模型:

            import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.AttributeOverride;
    import javax.persistence.AttributeOverrides;
    import javax.persistence.Column;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;

    /**
     * Assessment generated by hbm2java
     */
    @Entity
    @Table(name = "Assessment", catalog = "mydb")
    public class AssessmentModel implements java.io.Serializable {

        private AssessmentIdModel id;
        private SpEdTeacherModel spedteacher;
        private StudentModel Student;
        private Date assessmentDate;
        private Set<IepModel> ieps = new HashSet<IepModel>(0);
        private Set<SkillassessmentModel> skillassessments = new HashSet<SkillassessmentModel>(0);

        public AssessmentModel() {
        }

        public AssessmentModel(AssessmentIdModel id, SpEdTeacherModel spedteacher, StudentModel Student, Date assessmentDate) {
            this.id = id;
            this.spedteacher = spedteacher;
            this.Student = Student;
            this.assessmentDate = assessmentDate;
        }

        public AssessmentModel(AssessmentIdModel id, SpEdTeacherModel spedteacher, StudentModel Student, Date assessmentDate, Set<IepModel> ieps,
                Set<SkillassessmentModel> skillassessments) {
            this.id = id;
            this.spedteacher = spedteacher;
            this.Student = Student;
            this.assessmentDate = assessmentDate;
            this.ieps = ieps;
            this.skillassessments = skillassessments;
        }

        @EmbeddedId

        @AttributeOverrides({
                @AttributeOverride(name = "assessmentId", column = @Column(name = "assessment_id", nullable = false) ),
                @AttributeOverride(name = "spedId", column = @Column(name = "sped_id", nullable = false) ),
                @AttributeOverride(name = "studentId", column = @Column(name = "student_id", nullable = false) ) })
        public AssessmentIdModel getId() {
            return this.id;
        }

        public void setId(AssessmentIdModel id) {
            this.id = id;
        }

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "sped_id", nullable = false, insertable = false, updatable = false)
        public SpEdTeacherModel getSpedteacher() {
            return this.spedteacher;
        }

        public void setSpedteacher(SpEdTeacherModel spedteacher) {
            this.spedteacher = spedteacher;
        }

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "student_id", nullable = false, insertable = false, updatable = false)
        public StudentModel getStudent() {
            return this.Student;
        }

        public void setStudent(StudentModel Student) {
            this.Student = Student;
        }

        @Temporal(TemporalType.DATE)
        @Column(name = "assessment_date", nullable = false, length = 10)
        public Date getAssessmentDate() {
            return this.assessmentDate;
        }

        public void setAssessmentDate(Date assessmentDate) {
            this.assessmentDate = assessmentDate;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "Assessment")
        public Set<IepModel> getIeps() {
            return this.ieps;
        }

        public void setIeps(Set<IepModel> ieps) {
            this.ieps = ieps;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "Assessment")
        public Set<SkillassessmentModel> getSkillassessments() {
            return this.skillassessments;
        }

        public void setSkillassessments(Set<SkillassessmentModel> skillassessments) {
            this.skillassessments = skillassessments;
        }

    }

学生模型:

        import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import static javax.persistence.GenerationType.IDENTITY;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;

    /**
     * Student generated by hbm2java
     */
    @Entity
    @Table(name = "Student", catalog = "mydb")
    public class StudentModel implements java.io.Serializable {

        private Integer studentId;
        private GuardianModel guardian;
        private String studentFname;
        private String studentMname;
        private String studentLname;
        private Date studentBirthdate;
        private int studentAge;
        private String studentGender;
        private String studentNationality;
        private String studentProgram;
        private Set<AssessmentModel> assessments = new HashSet<AssessmentModel>(0);
        private Set<StudenthastherapistModel> studenthastherapists = new HashSet<StudenthastherapistModel>(0);

        public StudentModel() {
        }

        public StudentModel(GuardianModel guardian, String studentFname, String studentMname, String studentLname,
                Date studentBirthdate, int studentAge, String studentGender, String studentNationality, String studentProgram) {
            this.guardian = guardian;
            this.studentFname = studentFname;
            this.studentMname = studentMname;
            this.studentLname = studentLname;
            this.studentBirthdate = studentBirthdate;
            this.studentAge = studentAge;
            this.studentGender = studentGender;
            this.studentNationality = studentNationality;
            this.studentProgram = studentProgram;
        }

        public StudentModel(GuardianModel guardian, String studentFname, String studentMname, String studentLname,
                Date studentBirthdate, int studentAge, String studentGender,
                String studentNationality, String studentProgram, Set<AssessmentModel> assessments,
                Set<StudenthastherapistModel> studenthastherapists) {
            this.guardian = guardian;
            this.studentFname = studentFname;
            this.studentMname = studentMname;
            this.studentLname = studentLname;
            this.studentBirthdate = studentBirthdate;
            this.studentAge = studentAge;
            this.studentGender = studentGender;
            this.studentNationality = studentNationality;
            this.studentProgram = studentProgram;
            this.assessments = assessments;
            this.studenthastherapists = studenthastherapists;
        }

        @Id
        @GeneratedValue(strategy = IDENTITY)

        @Column(name = "student_id", unique = true, nullable = false)
        public Integer getStudentId() {
            return this.studentId;
        }

        public void setStudentId(Integer studentId) {
            this.studentId = studentId;
        }

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "guardian_id", nullable = false)
        public GuardianModel getGuardian() {
            return this.guardian;
        }

        public void setGuardian(GuardianModel guardian) {
            this.guardian = guardian;
        }

        @Column(name = "student_fname", nullable = false, length = 45)
        public String getStudentFname() {
            return this.studentFname;
        }

        public void setStudentFname(String studentFname) {
            this.studentFname = studentFname;
        }

        @Column(name = "student_mname", nullable = false, length = 45)
        public String getStudentMname() {
            return this.studentMname;
        }

        public void setStudentMname(String studentMname) {
            this.studentMname = studentMname;
        }

        @Column(name = "student_lname", nullable = false, length = 45)
        public String getStudentLname() {
            return this.studentLname;
        }

        public void setStudentLname(String studentLname) {
            this.studentLname = studentLname;
        }

        @Temporal(TemporalType.DATE)
        @Column(name = "student_birthdate", nullable = false, length = 10)
        public Date getStudentBirthdate() {
            return this.studentBirthdate;
        }

        public void setStudentBirthdate(Date studentBirthdate) {
            this.studentBirthdate = studentBirthdate;
        }

        @Column(name = "student_age", nullable = false)
        public int getStudentAge() {
            return this.studentAge;
        }

        public void setStudentAge(int studentAge) {
            this.studentAge = studentAge;
        }

        @Column(name = "student_gender", nullable = false, length = 6)
        public String getStudentGender() {
            return this.studentGender;
        }

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

        @Column(name = "student_nationality", nullable = false, length = 15)
        public String getStudentNationality() {
            return this.studentNationality;
        }

        public void setStudentNationality(String studentNationality) {
            this.studentNationality = studentNationality;
        }

        @Column(name = "student_program", nullable = false, length = 45)
        public String getStudentProgram() {
            return this.studentProgram;
        }

        public void setStudentProgram(String studentProgram) {
            this.studentProgram = studentProgram;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "Student")
        public Set<AssessmentModel> getAssessments() {
            return this.assessments;
        }

        public void setAssessments(Set<AssessmentModel> assessments) {
            this.assessments = assessments;
        }

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "Student")
        public Set<StudenthastherapistModel> getStudenthastherapists() {
            return this.studenthastherapists;
        }

        public void setStudenthastherapists(Set<StudenthastherapistModel> studenthastherapists) {
            this.studenthastherapists = studenthastherapists;
        }

    }

这是错误:

            HTTP Status 500 - javax.servlet.ServletException: java.lang.ExceptionInInitializerError
    type Exception report
    message javax.servlet.ServletException:   java.lang.ExceptionInInitializerError
    description The server encountered an internal error that prevented it from fulfilling this request.
    exception 
    org.apache.jasper.JasperException: javax.servlet.ServletException:  java.lang.ExceptionInInitializerError
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:556)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:462)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    root cause 
    javax.servlet.ServletException: java.lang.ExceptionInInitializerError
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)
        org.apache.jsp.index_jsp._jspService(index_jsp.java:138)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


    root cause 
    java.lang.ExceptionInInitializerError
    softdev.asese.utils.HibernateUtil.<clinit>(HibernateUtil.java:17)
    softdev.asese.dao.GuardianDao.getGuardian(GuardianDao.java:16)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



    root cause 
    org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: softdev.asese.models.AssessmentModel.Student in softdev.asese.models.StudentModel.assessments
        org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:769)
        org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:729)
        org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:70)
        org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1697)
        org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1426)
        org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)
        org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)
        softdev.asese.utils.HibernateUtil.<clinit>(HibernateUtil.java:14)
        softdev.asese.dao.GuardianDao.getGuardian(GuardianDao.java:16)
        org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

最佳答案

您的类(class)似乎没问题,除了您在AssessmentModel中的属性Student的大写字母。尝试将属性名称和mappedBy引用更改为小写。另外,您可以尝试向注释中添加一些参数,就像我的示例一样。我对 hibernate 比较陌生,并且知道注释中的一个简单单词可能很重要。

在我的家长类,我有......

@OneToMany(fetch=FetchType.LAZY, mappedBy="cobpresGestion")
@Cascade({CascadeType.ALL})
public Set<CobpresOptionDet> getCobpresOptionDets() {
    return this.cobpresOptionDets;
}

在我的 child 类,我有......

@ManyToOne(fetch=FetchType.LAZY, optional=false)
@JoinColumn(name="IDCOBPRES", nullable=false, insertable=true, updatable=true)
public CobpresGestion getCobpresGestion() {
    return this.cobpresGestion;
}

关于java.lang.ExceptionInInitializerError 和 org.hibernate.AnnotationException : mappedBy reference an unknown target entity property:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31354606/

相关文章:

java - 正则表达式,通过验证计算其中的 CRC

java - Intellij IDEA 可以存在于 Netbeans 商店中吗?

Java在投影前后在不同模型上使用过滤

java - JPA - 更改mappedBy列的名称

java - OneToMany/ManyToOne 关系的 Hibernate 标准

java - 如何用Java中的Canvas根据屏幕的宽度和高度绘制字符串或矩形

java - 如何在where子句中使用子查询?

mysql - 组织.hibernate.MappingException : Named query not known

java - 数据库中添加NULL

java - Spring Data Mongo : How to save only date i. e。不是时间