无法通过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