无法通过hibernate中的反射设置程序错误设置字段值
我将该类定义如下:无法通过hibernate中的反射设置程序错误设置字段值,hibernate,reflection,mapping,setter,Hibernate,Reflection,Mapping,Setter,我将该类定义如下: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.catapult.bid.model; /** * * @author Alok Shrestha */ public class BidToolTradeLanes { private int tradeLaneId; priv
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.catapult.bid.model;
/**
*
* @author Alok Shrestha
*/
public class BidToolTradeLanes {
private int tradeLaneId;
private String tradeLaneName;
private int contractId;
public BidToolTradeLanes() {
}
public int getContractId() {
return contractId;
}
public void setContractId(int contractId) {
this.contractId = contractId;
}
public int getTradeLaneId() {
return tradeLaneId;
}
public void setTradeLaneId(int tradeLaneId) {
this.tradeLaneId = tradeLaneId;
}
public String getTradeLaneName() {
return tradeLaneName;
}
}
我有上面这个类的映射文件:
<hibernate-mapping package="com.catapult.bid.model" default-access="field">
<class name="BidToolTradeLanes" table="bt_trade_lane" schema="bidtool" >
<id name="tradeLaneId" type="int" column="trade_lane_id">
<generator class="sequence">
<param name="sequence">bidtool.trade_lane_trade_lane_id_seq</param>
</generator>
</id>
<property name="tradeLaneName" type="string">
<column name="tradelane_name" length="20"/>
</property>
<many-to-one class="Contracts" fetch="select" name="contractId">
<column name="contract_id"/>
</many-to-one>
</class>
我得到的错误是:
could not set a field value by reflection setter of com.catapult.bid.model.BidToolTradeLanes.contractId
非常感谢您的帮助。因为
contract
被映射为
它的类型应该是Contracts
,而不是int
这就是数据库模式和对象模型之间的区别:在数据库模式中有外键,而在对象模型中有对其他对象的引用
还要注意的是,contract
作为引用的名称比contracd
更好,并且对象模型中的类通常以单数命名,而不是复数
另请参见:
could not set a field value by reflection setter of com.catapult.bid.model.BidToolTradeLanes.contractId