当前位置: 首页 > 知识库问答 >
问题:

org.hibernate.AnnotationException:未知的mappedBy位于。。。引用的属性未知

严书
2023-03-14

我使用SpringBoot2.0.0.RC1,Hibernate的最新版本。文件persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="vy">
        <class>com.donhuvy.entity.SysReportLayoutUserApply</class>
        <class>com.donhuvy.entity.SysReportList</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
        </properties>
    </persistence-unit>
</persistence>

FileSysReportLayoutUserApply.java

package com.donhuvy.entity;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import java.util.Objects;

@Entity
@Table(name = "SYS_REPORT_LAYOUT_USER_APPLY", schema = "ACCOUNTING", catalog = "")
public class SysReportLayoutUserApply {

    private long reportId;
    private Long userId;
    private SysReportLayoutConfig sysReportLayoutConfigByLayoutId;

    @Id
    @Column(name = "REPORT_ID", nullable = false, precision = 0)
    public long getReportId() {
        return reportId;
    }

    public void setReportId(long reportId) {
        this.reportId = reportId;
    }

    @Basic
    @Column(name = "USER_ID", nullable = true, precision = 0)
    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SysReportLayoutUserApply that = (SysReportLayoutUserApply) o;
        return reportId == that.reportId &&
                Objects.equals(userId, that.userId);
    }

    @Override
    public int hashCode() {

        return Objects.hash(reportId, userId);
    }

    @ManyToOne
    @JoinColumn(name = "LAYOUT_ID", referencedColumnName = "LAYOUT_ID")
    public SysReportLayoutConfig getSysReportLayoutConfigByLayoutId() {
        return sysReportLayoutConfigByLayoutId;
    }

    public void setSysReportLayoutConfigByLayoutId(SysReportLayoutConfig sysReportLayoutConfigByLayoutId) {
        this.sysReportLayoutConfigByLayoutId = sysReportLayoutConfigByLayoutId;
    }
}

文件SysReportList.java

package com.donhuvy.entity;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import java.sql.Timestamp;
import java.util.Objects;

@Entity
@Table(name = "SYS_REPORT_LIST", schema = "ACCOUNTING", catalog = "")
public class SysReportList {


    private long reportId;
    private String reportName;
    private String reportName48;
    private String reportFile;
    private String functionReportName;
    private String procedureName;
    private String parameterFormName;
    private String parameterUserControl;
    private String reportViewer;
    private String refTypeList;
    private Byte sortOrder;
    private byte accountingSystem;
    private Long branchId;
    private String description;
    private String formNo;
    private String formNo48;
    private Timestamp lastViewDate;
    private String tableName;
    private Boolean isBeta;
    private boolean isInvoice;
    private boolean isSystem;
    private boolean isShow;
    private Boolean isNotPrintSummary;
    private Byte invTypeId;
    private Boolean isPrintLineNumber;
    private byte reportType;
    private Byte reportStyle;
    private String parentId;
    private String reportDetailName;
    private String linkToReportDetail;
    private Byte invMethod;
    private boolean isParent;
    private Byte refTypeCategory;
    private Timestamp createDate;
    private String reportTitle;
    private String listParameter;
    private String reportNameEnglish;
    private String reportNameEnglish48;
    private Byte showTotalPageNumber;
    private String tableNameExport;
    private String reportName133;
    private String reportNameEnglish133;
    private String formNo133;
    private SysReportLayoutUserApply sysReportLayoutUserApplyByReportId;
    private SysReportGroup sysReportGroupByGroupId;

    @Id
    @Column(name = "REPORT_ID", nullable = false, precision = 0)
    public long getReportId() {
        return reportId;
    }

    public void setReportId(long reportId) {
        this.reportId = reportId;
    }

    @Basic
    @Column(name = "REPORT_NAME", nullable = true, length = 256)
    public String getReportName() {
        return reportName;
    }

    public void setReportName(String reportName) {
        this.reportName = reportName;
    }

    @Basic
    @Column(name = "REPORT_NAME_48", nullable = true, length = 256)
    public String getReportName48() {
        return reportName48;
    }

    public void setReportName48(String reportName48) {
        this.reportName48 = reportName48;
    }

    @Basic
    @Column(name = "REPORT_FILE", nullable = true, length = 100)
    public String getReportFile() {
        return reportFile;
    }

    public void setReportFile(String reportFile) {
        this.reportFile = reportFile;
    }

    @Basic
    @Column(name = "FUNCTION_REPORT_NAME", nullable = true, length = 128)
    public String getFunctionReportName() {
        return functionReportName;
    }

    public void setFunctionReportName(String functionReportName) {
        this.functionReportName = functionReportName;
    }

    @Basic
    @Column(name = "PROCEDURE_NAME", nullable = true, length = 128)
    public String getProcedureName() {
        return procedureName;
    }

    public void setProcedureName(String procedureName) {
        this.procedureName = procedureName;
    }

    @Basic
    @Column(name = "PARAMETER_FORM_NAME", nullable = true, length = 128)
    public String getParameterFormName() {
        return parameterFormName;
    }

    public void setParameterFormName(String parameterFormName) {
        this.parameterFormName = parameterFormName;
    }

    @Basic
    @Column(name = "PARAMETER_USER_CONTROL", nullable = true, length = 128)
    public String getParameterUserControl() {
        return parameterUserControl;
    }

    public void setParameterUserControl(String parameterUserControl) {
        this.parameterUserControl = parameterUserControl;
    }

    @Basic
    @Column(name = "REPORT_VIEWER", nullable = true, length = 128)
    public String getReportViewer() {
        return reportViewer;
    }

    public void setReportViewer(String reportViewer) {
        this.reportViewer = reportViewer;
    }

    @Basic
    @Column(name = "REF_TYPE_LIST", nullable = false, length = 700)
    public String getRefTypeList() {
        return refTypeList;
    }

    public void setRefTypeList(String refTypeList) {
        this.refTypeList = refTypeList;
    }

    @Basic
    @Column(name = "SORT_ORDER", nullable = true, precision = 0)
    public Byte getSortOrder() {
        return sortOrder;
    }

    public void setSortOrder(Byte sortOrder) {
        this.sortOrder = sortOrder;
    }

    @Basic
    @Column(name = "ACCOUNTING_SYSTEM", nullable = false, precision = 0)
    public byte getAccountingSystem() {
        return accountingSystem;
    }

    public void setAccountingSystem(byte accountingSystem) {
        this.accountingSystem = accountingSystem;
    }

    @Basic
    @Column(name = "BRANCH_ID", nullable = true, precision = 0)
    public Long getBranchId() {
        return branchId;
    }

    public void setBranchId(Long branchId) {
        this.branchId = branchId;
    }

    @Basic
    @Column(name = "DESCRIPTION", nullable = true, length = 256)
    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Basic
    @Column(name = "FORM_NO", nullable = true, length = 128)
    public String getFormNo() {
        return formNo;
    }

    public void setFormNo(String formNo) {
        this.formNo = formNo;
    }

    @Basic
    @Column(name = "FORM_NO_48", nullable = true, length = 128)
    public String getFormNo48() {
        return formNo48;
    }

    public void setFormNo48(String formNo48) {
        this.formNo48 = formNo48;
    }

    @Basic
    @Column(name = "LAST_VIEW_DATE", nullable = true)
    public Timestamp getLastViewDate() {
        return lastViewDate;
    }

    public void setLastViewDate(Timestamp lastViewDate) {
        this.lastViewDate = lastViewDate;
    }

    @Basic
    @Column(name = "TABLE_NAME", nullable = true, length = 1024)
    public String getTableName() {
        return tableName;
    }

    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    @Basic
    @Column(name = "IS_BETA", nullable = true, precision = 0)
    public Boolean getBeta() {
        return isBeta;
    }

    public void setBeta(Boolean beta) {
        isBeta = beta;
    }

    @Basic
    @Column(name = "IS_INVOICE", nullable = false, precision = 0)
    public boolean isInvoice() {
        return isInvoice;
    }

    public void setInvoice(boolean invoice) {
        isInvoice = invoice;
    }

    @Basic
    @Column(name = "IS_SYSTEM", nullable = false, precision = 0)
    public boolean isSystem() {
        return isSystem;
    }

    public void setSystem(boolean system) {
        isSystem = system;
    }

    @Basic
    @Column(name = "IS_SHOW", nullable = false, precision = 0)
    public boolean isShow() {
        return isShow;
    }

    public void setShow(boolean show) {
        isShow = show;
    }

    @Basic
    @Column(name = "IS_NOT_PRINT_SUMMARY", nullable = true, precision = 0)
    public Boolean getNotPrintSummary() {
        return isNotPrintSummary;
    }

    public void setNotPrintSummary(Boolean notPrintSummary) {
        isNotPrintSummary = notPrintSummary;
    }

    @Basic
    @Column(name = "INV_TYPE_ID", nullable = true, precision = 0)
    public Byte getInvTypeId() {
        return invTypeId;
    }

    public void setInvTypeId(Byte invTypeId) {
        this.invTypeId = invTypeId;
    }

    @Basic
    @Column(name = "IS_PRINT_LINE_NUMBER", nullable = true, precision = 0)
    public Boolean getPrintLineNumber() {
        return isPrintLineNumber;
    }

    public void setPrintLineNumber(Boolean printLineNumber) {
        isPrintLineNumber = printLineNumber;
    }

    @Basic
    @Column(name = "REPORT_TYPE", nullable = false, precision = 0)
    public byte getReportType() {
        return reportType;
    }

    public void setReportType(byte reportType) {
        this.reportType = reportType;
    }

    @Basic
    @Column(name = "REPORT_STYLE", nullable = true, precision = 0)
    public Byte getReportStyle() {
        return reportStyle;
    }

    public void setReportStyle(Byte reportStyle) {
        this.reportStyle = reportStyle;
    }

    @Basic
    @Column(name = "PARENT_ID", nullable = true, length = 100)
    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    @Basic
    @Column(name = "REPORT_DETAIL_NAME", nullable = true, length = 256)
    public String getReportDetailName() {
        return reportDetailName;
    }

    public void setReportDetailName(String reportDetailName) {
        this.reportDetailName = reportDetailName;
    }

    @Basic
    @Column(name = "LINK_TO_REPORT_DETAIL", nullable = true, length = 1024)
    public String getLinkToReportDetail() {
        return linkToReportDetail;
    }

    public void setLinkToReportDetail(String linkToReportDetail) {
        this.linkToReportDetail = linkToReportDetail;
    }

    @Basic
    @Column(name = "INV_METHOD", nullable = true, precision = 0)
    public Byte getInvMethod() {
        return invMethod;
    }

    public void setInvMethod(Byte invMethod) {
        this.invMethod = invMethod;
    }

    @Basic
    @Column(name = "IS_PARENT", nullable = false, precision = 0)
    public boolean isParent() {
        return isParent;
    }

    public void setParent(boolean parent) {
        isParent = parent;
    }

    @Basic
    @Column(name = "REF_TYPE_CATEGORY", nullable = true, precision = 0)
    public Byte getRefTypeCategory() {
        return refTypeCategory;
    }

    public void setRefTypeCategory(Byte refTypeCategory) {
        this.refTypeCategory = refTypeCategory;
    }

    @Basic
    @Column(name = "CREATE_DATE", nullable = true)
    public Timestamp getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Timestamp createDate) {
        this.createDate = createDate;
    }

    @Basic
    @Column(name = "REPORT_TITLE", nullable = true, length = 256)
    public String getReportTitle() {
        return reportTitle;
    }

    public void setReportTitle(String reportTitle) {
        this.reportTitle = reportTitle;
    }

    @Basic
    @Column(name = "LIST_PARAMETER", nullable = true, length = 1024)
    public String getListParameter() {
        return listParameter;
    }

    public void setListParameter(String listParameter) {
        this.listParameter = listParameter;
    }

    @Basic
    @Column(name = "REPORT_NAME_ENGLISH", nullable = true, length = 256)
    public String getReportNameEnglish() {
        return reportNameEnglish;
    }

    public void setReportNameEnglish(String reportNameEnglish) {
        this.reportNameEnglish = reportNameEnglish;
    }

    @Basic
    @Column(name = "REPORT_NAME_ENGLISH_48", nullable = true, length = 256)
    public String getReportNameEnglish48() {
        return reportNameEnglish48;
    }

    public void setReportNameEnglish48(String reportNameEnglish48) {
        this.reportNameEnglish48 = reportNameEnglish48;
    }

    @Basic
    @Column(name = "SHOW_TOTAL_PAGE_NUMBER", nullable = true, precision = 0)
    public Byte getShowTotalPageNumber() {
        return showTotalPageNumber;
    }

    public void setShowTotalPageNumber(Byte showTotalPageNumber) {
        this.showTotalPageNumber = showTotalPageNumber;
    }

    @Basic
    @Column(name = "TABLE_NAME_EXPORT", nullable = true, length = 20)
    public String getTableNameExport() {
        return tableNameExport;
    }

    public void setTableNameExport(String tableNameExport) {
        this.tableNameExport = tableNameExport;
    }

    @Basic
    @Column(name = "REPORT_NAME_133", nullable = true, length = 256)
    public String getReportName133() {
        return reportName133;
    }

    public void setReportName133(String reportName133) {
        this.reportName133 = reportName133;
    }

    @Basic
    @Column(name = "REPORT_NAME_ENGLISH_133", nullable = true, length = 256)
    public String getReportNameEnglish133() {
        return reportNameEnglish133;
    }

    public void setReportNameEnglish133(String reportNameEnglish133) {
        this.reportNameEnglish133 = reportNameEnglish133;
    }

    @Basic
    @Column(name = "FORM_NO_133", nullable = true, length = 128)
    public String getFormNo133() {
        return formNo133;
    }

    public void setFormNo133(String formNo133) {
        this.formNo133 = formNo133;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SysReportList that = (SysReportList) o;
        return reportId == that.reportId &&
                accountingSystem == that.accountingSystem &&
                isInvoice == that.isInvoice &&
                isSystem == that.isSystem &&
                isShow == that.isShow &&
                reportType == that.reportType &&
                isParent == that.isParent &&
                Objects.equals(reportName, that.reportName) &&
                Objects.equals(reportName48, that.reportName48) &&
                Objects.equals(reportFile, that.reportFile) &&
                Objects.equals(functionReportName, that.functionReportName) &&
                Objects.equals(procedureName, that.procedureName) &&
                Objects.equals(parameterFormName, that.parameterFormName) &&
                Objects.equals(parameterUserControl, that.parameterUserControl) &&
                Objects.equals(reportViewer, that.reportViewer) &&
                Objects.equals(refTypeList, that.refTypeList) &&
                Objects.equals(sortOrder, that.sortOrder) &&
                Objects.equals(branchId, that.branchId) &&
                Objects.equals(description, that.description) &&
                Objects.equals(formNo, that.formNo) &&
                Objects.equals(formNo48, that.formNo48) &&
                Objects.equals(lastViewDate, that.lastViewDate) &&
                Objects.equals(tableName, that.tableName) &&
                Objects.equals(isBeta, that.isBeta) &&
                Objects.equals(isNotPrintSummary, that.isNotPrintSummary) &&
                Objects.equals(invTypeId, that.invTypeId) &&
                Objects.equals(isPrintLineNumber, that.isPrintLineNumber) &&
                Objects.equals(reportStyle, that.reportStyle) &&
                Objects.equals(parentId, that.parentId) &&
                Objects.equals(reportDetailName, that.reportDetailName) &&
                Objects.equals(linkToReportDetail, that.linkToReportDetail) &&
                Objects.equals(invMethod, that.invMethod) &&
                Objects.equals(refTypeCategory, that.refTypeCategory) &&
                Objects.equals(createDate, that.createDate) &&
                Objects.equals(reportTitle, that.reportTitle) &&
                Objects.equals(listParameter, that.listParameter) &&
                Objects.equals(reportNameEnglish, that.reportNameEnglish) &&
                Objects.equals(reportNameEnglish48, that.reportNameEnglish48) &&
                Objects.equals(showTotalPageNumber, that.showTotalPageNumber) &&
                Objects.equals(tableNameExport, that.tableNameExport) &&
                Objects.equals(reportName133, that.reportName133) &&
                Objects.equals(reportNameEnglish133, that.reportNameEnglish133) &&
                Objects.equals(formNo133, that.formNo133);
    }

    @Override
    public int hashCode() {

        return Objects.hash(reportId, reportName, reportName48, reportFile, functionReportName, procedureName, parameterFormName, parameterUserControl, reportViewer, refTypeList, sortOrder, accountingSystem, branchId, description, formNo, formNo48, lastViewDate, tableName, isBeta, isInvoice, isSystem, isShow, isNotPrintSummary, invTypeId, isPrintLineNumber, reportType, reportStyle, parentId, reportDetailName, linkToReportDetail, invMethod, isParent, refTypeCategory, createDate, reportTitle, listParameter, reportNameEnglish, reportNameEnglish48, showTotalPageNumber, tableNameExport, reportName133, reportNameEnglish133, formNo133);
    }

    @OneToOne(mappedBy = "sysReportListByReportId")
    public SysReportLayoutUserApply getSysReportLayoutUserApplyByReportId() {
        return sysReportLayoutUserApplyByReportId;
    }

    public void setSysReportLayoutUserApplyByReportId(SysReportLayoutUserApply sysReportLayoutUserApplyByReportId) {
        this.sysReportLayoutUserApplyByReportId = sysReportLayoutUserApplyByReportId;
    }

    @ManyToOne
    @JoinColumn(name = "GROUP_ID", referencedColumnName = "GROUP_ID")
    public SysReportGroup getSysReportGroupByGroupId() {
        return sysReportGroupByGroupId;
    }

    public void setSysReportGroupByGroupId(SysReportGroup sysReportGroupByGroupId) {
        this.sysReportGroupByGroupId = sysReportGroupByGroupId;
    }
}

错误:

org.springframework.beans.factory.BeanCreationExc0019:错误创建在类路径资源[org/springframe/boo/autoconfiure/orm/jpa/HibernateJpaConfiguration.class]中定义的名称'entityManagerFactory'的bean:调用init方法失败;嵌套异常是org.hibernate.注释异常:未知映射通过在:com.donhuvy.entity.SysReportList.sysReportLayoutUserApplyByReportId,引用的属性未知:com.donhuvy.entity.SysReportLayoutUserApply.sysReportListByReportId

怎么修?

共有1个答案

祝英博
2023-03-14

mappedBy属性在此方法中不完全匹配

 @OneToOne(mappedBy = "sysReportListByReportId")
    public SysReportLayoutUserApply getSysReportLayoutUserApplyByReportId() {
        return sysReportLayoutUserApplyByReportId;
    }

此属性值应与引用的类对象(如sysReportLayoutConfigByLayoutId)完全相同

检查下面的示例

Model.java引用了带有@ManyToOne和“Brand_id”的Brand类

public class Model {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

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

    @JsonIgnore
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "brand_id")
    private Brand brand;
 }

java引用了带有mappedBy的模型类,mappedBy的品牌值与模型类中的变量名完全相同

public class Brand {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

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

    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "brand")
    private Set<Model> models;

}
 类似资料:
  • 我有4个表kode_pos、korwil、user和WAFAT。在Korwil类中,它保存来自user的外键,并将主键交给kode_pos,这意味着在Korwil类@OneToOne和@OneToMany中有两个映射, 我有个错误 org.hibernate.AnnotationException:在:org.ppbni.splatter.model.useradmin.korwil中未知mapp

  • 您好,我是JPA Spring boot的新手,现在我正在尝试将两个表之间的连接转换为第三个表。所以我有一个医生和病人表,其中有它的属性,一个医生可以检查每个病人,一个病人可以看望每个医生。但是在一次检查中,不能有超过一个病人和一个医生。对于医生,我想保留他们检查过的患者的信息,分别是患者的信息,以及他们检查过的医生的信息。我想创建一个名为DoctorVisit的中间表,其中我有做检查的医生的id

  • 首先,我的课程: 使用者 角色地图。JAVA 当我尝试在服务器上运行这个我有这样的异常:错误创建bean与名称'SessionFactory'定义在ServletContext资源[/WEB-INF/类/base Beans.xml]:调用init方法失败;嵌套的异常org.hibernate.注释异常:映射通过引用一个未知的目标实体属性:com.patpuc.model.ap.users在com

  • 我第一次使用Hibernate,并且很难让它与我的模式一起工作。 我得到了"org.hibernate.注释异常:映射通过引用未知的目标实体属性:学生。教师在Faculty.all学生”。 一些学生共用一个导师。因此,我认为学生和教师的关系是多对多的,但我被告知这是多对多的关系。 Student.java Faculty.java 数据库架构: 在看了留档后,我尝试了几种不同的注释,但我看不出我做

  • 我对Meal和MealGroup之间的关系有问题。Hibernate返回给我:"mappdBy引用未知的目标实体属性"。我有两个实体: 我尝试删除@Join Column和mappedBy。已创建其他表,但我想加入该列。 和 谢谢你的帮助。

  • 我正试图用hibernate在数据库中存储一个实体。我有以下课程: 实验节点组如下所示: NodeGroup类看起来像这样: 现在,当我尝试编译代码时,我得到了这个错误: 导致原因:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性:[……]。在[…]中进行实验nodegroup.experience。UsableRemoteExperien