我使用Spring Boot 2.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>
档案SysReportLayoutUserApply.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.BeanCreationException:错误 在类路径中定义名为'entityManagerFactory'的bean 资源 [组织/ springframework的/引导/自动配置/ ORM / JPA / HibernateJpaConfiguration.class]: 调用init方法失败;嵌套异常是 org.hibernate.AnnotationException:未知的mappedBy: com.donhuvy.entity.SysReportList.sysReportLayoutUserApplyByReportId, 引用属性未知: com.donhuvy.entity.SysReportLayoutUserApply.sysReportListByReportId
如何解决?
答案 0 :(得分:2)
mappedBy属性在此方法中不完全匹配
@OneToOne(mappedBy = "sysReportListByReportId")
public SysReportLayoutUserApply getSysReportLayoutUserApplyByReportId() {
return sysReportLayoutUserApplyByReportId;
}
此属性值应与引用的类对象完全相同,例如 sysReportLayoutConfigByLayoutId
检查下面的例子
Model.java引用带有“ brand_id ”的@ManyToOne的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;
}
Brand.java引用带有品牌值的mappedBy的Model类,它与Model类的变量名完全相同
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;
}