这是Person.hbm.xml<hibernate-mapping>
    <class name="dao.Person" table="PERSON" schema="SYSMAN">
        <id name="id" type="big_decimal">
            <column name="ID" precision="22" scale="0" />
            <generator class="assigned" />
        </id>
        <many-to-one name="addressid"
        class="dao.Address"
        column="addressid"       
        fetch="join"
        ></many-to-one>
    </class>
</hibernate-mapping>
这是Address.hbm.xml<hibernate-mapping>
    <class name="dao.Address" table="ADDRESS" schema="SYSMAN">
        <id name="addressid" type="big_decimal">
            <column name="ADDRESSID" precision="22" scale="0" />
            <generator class="assigned" />
        </id>
    </class>
</hibernate-mapping>
这是我的测试类public class test {
public static void main(String[] args) {
Session ss=HibernateSessionFactory.getSession();
Transaction ts=ss.getTransaction();
ts.begin();
Person p=new Person(new BigDecimal(11),new BigDecimal(111));
ss.save(p);
ts.commit();
}
}但是程序老是报严重: IllegalArgumentException in class: dao.Address, getter method of property: addressid
请各位看看。

解决方案 »

  1.   

     <id name="addressid" type="big_decimal">
    type好像是String int 之类的类型吧?  好久没用hibernate忘记了 
      

  2.   

    这个是myeclipse自动生成的,如果不用many to one直接插入是不会错的。
      

  3.   

    能够把Address和Person类贴出来。另外new Person(new BigDecimal(11),new BigDecimal(111));入参有意思啊,new BigDecimal(11)和new BigDecimal("11")是不同的,前者就相当于double d = 11D;
    BigDecimal入参为数字的而不是字符串的,还是不能够精度运算。
    建议
    new Person(double d1,double d2){
    BigDecimal big1 = new BigDecimal(String.valueOf(d1));
    BigDecimal big2 = new BigDecimal(String.valueOf(d2));
    ...
    }
      

  4.   

    这个是myeclipse自动生成的我在oracle中用的是Number他就自动生成了Bigdecimal这是address类
    public class Address implements java.io.Serializable {
    private static final long serialVersionUID = 5505900745671811399L;
    private BigDecimal addressid;
    public Address() {
    }
    public Address(BigDecimal addressid) {
    this.addressid = addressid;
    }
    public BigDecimal getAddressid() {
    return addressid;
    }
    public void setAddressid(BigDecimal addressid) {
    this.addressid = addressid;
    }
    }
    这是Person类
    public class Person implements java.io.Serializable { private BigDecimal id;
    private BigDecimal addressid;
    public Person() {
    }
    /** full constructor */
    public Person(BigDecimal id, BigDecimal addressid) {
    this.id = id;
    this.addressid = addressid;
    } public BigDecimal getId() {
    return this.id;
    }
    public void setId(BigDecimal id) {
    this.id = id;
    }
    public BigDecimal getAddressid() {
    return this.addressid;
    }
    public void setAddressid(BigDecimal addressid) {
    this.addressid = addressid;
    }}