gpt4 book ai didi

java - org.hibernate.AnnotationException : Referenced property not a (One|Many)ToOne:

转载 作者:行者123 更新时间:2023-11-30 07:06:38 29 4
gpt4 key购买 nike

我正在尝试使用 Hibernate 建立一对一关系。我已尝试按照其他问题的建议进行操作,但仍然遇到问题。

我有一个 Company 类,它有自己的一套仓库规则。每个实体都有一个 BusinessUnitNumber 作为表的 Id。

@Entity(name="COBUSMST")
public class Company implements Serializable{
private static final long serialVersionUID = 2573441991172174342L;
private Integer businessUnit;
private String longName;
private String shortName;
private String address1;
private String address2;
private String city;
private String state;
private String zipCode;
private String returnAddress1;
private String returnAddress2;
private String returnCity;
private String returnState;
private String returnZipCode;
private int phoneNumber;
private int areaCode;
private boolean replacementCharge;
private BigDecimal replacementChargeAmount;
private String customerServiceKeycode;
private BigDecimal restockPercent;
private Integer enterpriseId;
private String country;
private String returnCountry;
private int phoneExtension;
private String phoneType;
private String giftCardItemNumber;
private boolean implementationStatus;
private int defaultWebsiteId;
private BigDecimal callTagFee;

@OneToOne
@JoinColumn(name="BUSUNTNBR")
private WarehouseRules warehouseRules;

/**
* @return the businessUnit
*/
@Id
@Column(name="BUSUNTNBR")
public Integer getBusinessUnit() {
return businessUnit;
}
/**
* @param businessUnit the businessUnit to set
*/
public void setBusinessUnit(Integer businessUnit) {
this.businessUnit = businessUnit;
}
/**
* @return the longName
*/
@Column(name="LNGNAM")
public String getLongName() {
return longName;
}
/**
* @param longName the longName to set
*/
public void setLongName(String longName) {
this.longName = longName;
}
/**
* @return the shortName
*/
@Column(name="SRTNAM")
public String getShortName() {
return shortName;
}
/**
* @param shortName the shortName to set
*/
public void setShortName(String shortName) {
this.shortName = shortName;
}
/**
* @return the address1
*/
@Column(name="ADR1")
public String getAddress1() {
return address1;
}
/**
* @param address1 the address1 to set
*/
public void setAddress1(String address1) {
this.address1 = address1;
}
/**
* @return the address2
*/
@Column(name="ADR2")
public String getAddress2() {
return address2;
}
/**
* @param address2 the address2 to set
*/
public void setAddress2(String address2) {
this.address2 = address2;
}
/**
* @return the city
*/
@Column(name="CTY")
public String getCity() {
return city;
}
/**
* @param city the city to set
*/
public void setCity(String city) {
this.city = city;
}
/**
* @return the state
*/
@Column(name="STA")
public String getState() {
return state;
}
/**
* @param state the state to set
*/
public void setState(String state) {
this.state = state;
}
/**
* @return the zipCode
*/
@Column(name="PSTCOD")
public String getZipCode() {
return zipCode;
}
/**
* @param zipCode the zipCode to set
*/
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
/**
* @return the returnAddress1
*/
@Column(name="RTNADR1")
public String getReturnAddress1() {
return returnAddress1;
}
/**
* @param returnAddress1 the returnAddress1 to set
*/
public void setReturnAddress1(String returnAddress1) {
this.returnAddress1 = returnAddress1;
}
/**
* @return the returnAddress2
*/
@Column(name="RTNADR2")
public String getReturnAddress2() {
return returnAddress2;
}
/**
* @param returnAddress2 the returnAddress2 to set
*/
public void setReturnAddress2(String returnAddress2) {
this.returnAddress2 = returnAddress2;
}
/**
* @return the returnCity
*/
@Column(name="RTNCTY")
public String getReturnCity() {
return returnCity;
}
/**
* @param returnCity the returnCity to set
*/
public void setReturnCity(String returnCity) {
this.returnCity = returnCity;
}
/**
* @return the returnState
*/
@Column(name="RTNSTA")
public String getReturnState() {
return returnState;
}
/**
* @param returnState the returnState to set
*/
public void setReturnState(String returnState) {
this.returnState = returnState;
}
/**
* @return the returnZipCode
*/
@Column(name="RTNPSTCOD")
public String getReturnZipCode() {
return returnZipCode;
}
/**
* @param returnZipCode the returnZipCode to set
*/
public void setReturnZipCode(String returnZipCode) {
this.returnZipCode = returnZipCode;
}
/**
* @return the phoneNumber
*/
@Column(name="PHNNUM")
public int getPhoneNumber() {
return phoneNumber;
}
/**
* @param phoneNumber the phoneNumber to set
*/
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
/**
* @return the areaCode
*/
@Column(name="ARACOD")
public int getAreaCode() {
return areaCode;
}
/**
* @param areaCode the areaCode to set
*/
public void setAreaCode(int areaCode) {
this.areaCode = areaCode;
}
/**
* @return the replacementCharge
*/
@Column(name="RPLCHRFLG")
@Type(type="yes_no")
public boolean isReplacementCharge() {
return replacementCharge;
}
/**
* @param replacementCharge the replacementCharge to set
*/
public void setReplacementCharge(boolean replacementCharge) {
this.replacementCharge = replacementCharge;
}
/**
* @return the replacementChargeAmount
*/
@Column(name="RPLCHRAMT")
public BigDecimal getReplacementChargeAmount() {
return replacementChargeAmount;
}
/**
* @param replacementChargeAmount the replacementChargeAmount to set
*/
public void setReplacementChargeAmount(BigDecimal replacementChargeAmount) {
this.replacementChargeAmount = replacementChargeAmount;
}
/**
* @return the customerServiceKeycode
*/
@Column(name="CUSSVCKEY")
public String getCustomerServiceKeycode() {
return customerServiceKeycode;
}
/**
* @param customerServiceKeycode the customerServiceKeycode to set
*/
public void setCustomerServiceKeycode(String customerServiceKeycode) {
this.customerServiceKeycode = customerServiceKeycode;
}
/**
* @return the restockPercent
*/
@Column(name="RSKPCT")
public BigDecimal getRestockPercent() {
return restockPercent;
}
/**
* @param restockPercent the restockPercent to set
*/
public void setRestockPercent(BigDecimal restockPercent) {
this.restockPercent = restockPercent;
}
/**
* @return the enterpriseId
*/
@Column(name="ETRID")
public Integer getEnterpriseId() {
return enterpriseId;
}
/**
* @param enterpriseId the enterpriseId to set
*/
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
/**
* @return the country
*/
@Column(name="CRY")
public String getCountry() {
return country;
}
/**
* @param country the country to set
*/
public void setCountry(String country) {
this.country = country;
}
/**
* @return the returnCountry
*/
@Column(name="RTNCRY")
public String getReturnCountry() {
return returnCountry;
}
/**
* @param returnCountry the returnCountry to set
*/
public void setReturnCountry(String returnCountry) {
this.returnCountry = returnCountry;
}
/**
* @return the phoneExtension
*/
@Column(name="PHNEXT")
public int getPhoneExtension() {
return phoneExtension;
}
/**
* @param phoneExtension the phoneExtension to set
*/
public void setPhoneExtension(int phoneExtension) {
this.phoneExtension = phoneExtension;
}
/**
* @return the phoneType
*/
@Column(name="PHNTYPCLF")
public String getPhoneType() {
return phoneType;
}
/**
* @param phoneType the phoneType to set
*/
public void setPhoneType(String phoneType) {
this.phoneType = phoneType;
}
/**
* @return the giftCardItemNumber
*/
@Column(name="GFTCTFITM")
public String getGiftCardItemNumber() {
return giftCardItemNumber;
}
/**
* @param giftCardItemNumber the giftCardItemNumber to set
*/
public void setGiftCardItemNumber(String giftCardItemNumber) {
this.giftCardItemNumber = giftCardItemNumber;
}
/**
* @return the implementationStatus
*/
@Column(name="IMPSTSFLG")
@Type(type="yes_no")
public boolean isImplementationStatus() {
return implementationStatus;
}
/**
* @param implementationStatus the implementationStatus to set
*/
public void setImplementationStatus(boolean implementationStatus) {
this.implementationStatus = implementationStatus;
}
/**
* @return the defaultWebsiteId
*/
@Column(name="DFTWEBID")
public int getDefaultWebsiteId() {
return defaultWebsiteId;
}
/**
* @param defaultWebsiteId the defaultWebsiteId to set
*/
public void setDefaultWebsiteId(int defaultWebsiteId) {
this.defaultWebsiteId = defaultWebsiteId;
}
/**
* @return the callTagFee
*/
@Column(name="CTGFEEAMT")
public BigDecimal getCallTagFee() {
return callTagFee;
}
/**
* @param callTagFee the callTagFee to set
*/
public void setCallTagFee(BigDecimal callTagFee) {
this.callTagFee = callTagFee;
}
/**
* @return the warehouseRules
*/
public WarehouseRules getWarehouseRules() {
return warehouseRules;
}
/**
* @param warehouseRules the warehouseRules to set
*/
public void setWarehouseRules(WarehouseRules warehouseRules) {
this.warehouseRules = warehouseRules;
}

我的 WarehouseRules 类如下。

@Entity(name = "COBRLWHS")
public class WarehouseRules implements Serializable {
private static final long serialVersionUID = 1967521668154976367L;

@OneToOne(mappedBy="warehouseRules")
private Company company;

@Id
@Column(name = "BUSUNTNBR")
private Integer businessUnit;

@Column(name="ORDPTYCLF")
private String orderPriority;

@Column(name="WHSPPRCLF")
private String warehousePaperwork;

@Column(name="ENTCUTTIM")
private Time entryCutoffTime;

@Column(name = "RRLADLDAY")
private Integer ruralDays;

@Column(name = "SRRADLDAY")
private Integer superRuralDays;

@Column(name = "BOADLDAY")
private Integer backorderDays;

@Column(name = "DFTFRTTBL")
private String freightTable;

public void setId(Integer id) {
setBusinessUnit(id);
}

/**
* @return the businessUnit
*/
public Integer getBusinessUnit() {
return businessUnit;
}

/**
* @param businessUnit the businessUnit to set
*/
public void setBusinessUnit(Integer businessUnit) {
this.businessUnit = businessUnit;
}

/**
* @return the ruralDays
*/
public Integer getRuralDays() {
return ruralDays;
}

/**
* @param ruralDays the ruralDays to set
*/
public void setRuralDays(Integer ruralDays) {
this.ruralDays = ruralDays;
}

/**
* @return the superRuralDays
*/
public Integer getSuperRuralDays() {
return superRuralDays;
}

/**
* @param superRuralDays the superRuralDays to set
*/
public void setSuperRuralDays(Integer superRuralDays) {
this.superRuralDays = superRuralDays;
}

/**
* @return the backorderDays
*/
public Integer getBackorderDays() {
return backorderDays;
}

/**
* @param backorderDays the backorderDays to set
*/
public void setBackorderDays(Integer backorderDays) {
this.backorderDays = backorderDays;
}

/**
* @return the freightTable
*/
public String getFreightTable() {
return freightTable;
}

/**
* @param freightTable the freightTable to set
*/
public void setFreightTable(String freightTable) {
this.freightTable = freightTable;
}

/**
* @return the orderPriority
*/
public String getOrderPriority() {
return orderPriority;
}

/**
* @param orderPriority the orderPriority to set
*/
public void setOrderPriority(String orderPriority) {
this.orderPriority = orderPriority;
}

/**
* @return the warehousePaperwork
*/
public String getWarehousePaperwork() {
return warehousePaperwork;
}

/**
* @param warehousePaperwork the warehousePaperwork to set
*/
public void setWarehousePaperwork(String warehousePaperwork) {
this.warehousePaperwork = warehousePaperwork;
}

/**
* @return the entryCutoffTime
*/
public Time getEntryCutoffTime() {
return entryCutoffTime;
}

/**
* @param entryCutoffTime the entryCutoffTime to set
*/
public void setEntryCutoffTime(Time entryCutoffTime) {
this.entryCutoffTime = entryCutoffTime;
}



/**
* @return the company
*/
public Company getCompany() {
return company;
}

/**
* @param company the company to set
*/
public void setCompany(Company company) {
this.company = company;
}

public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result
+ ((businessUnit == null) ? 0 : businessUnit.hashCode());
return result;
}


public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
WarehouseRules other = (WarehouseRules) obj;
if (businessUnit == null) {
if (other.businessUnit != null)
return false;
} else if (!businessUnit.equals(other.businessUnit))
return false;
return true;
}
}

当我尝试运行代码时,出现以下异常:

org.hibernate.AnnotationException: Referenced property not a (One|Many)ToOne: com.oriental.comet.db2.company.entity.Company.warehouseRules in mappedBy of com.oriental.comet.db2.company.entity.WarehouseRules.company:org.hibernate.AnnotationException:Referenced property not a (One|Many)ToOne: com.oriental.comet.db2.company.entity.Company.warehouseRules in mappedBy of com.oriental.comet.db2.company.entity.WarehouseRules.company
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:248)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1697)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1426)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857)

我唯一能想到的是两个表的 ID 具有相同的列名?但我无法改变这一点,所以我不知道是否有解决方法(如果确实如此)或者我是否遗漏了某些内容。

最佳答案

Company类中,您注释了一个FIELD (warehouseRules),但该类中的所有其他人都使用PROPERTY。您应该使用“PROPERTY”“FIELD”,但不能混合使用。如果您始终如一,您的 JPA 提供商也许会明白这一点?

显然,消息可以更清晰,强调您尚未注释 PROPERTY( setter/getter )。其他 JPA 提供程序不一定坚持使用 OneToOne/OneToMany 注释,因为从属性/字段类型可以清楚地看出它是一种关系。

关于java - org.hibernate.AnnotationException : Referenced property not a (One|Many)ToOne:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008734/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com