hibernate类型问题 java.lang.IllegalArgumentException: object is not an instance of

昆卡卡 2011-07-07 10:11:41
如题,网上看到说是Address对象类里定义的AddressId类型和配置文件里的类型不匹配,我基本把所有类型都试过了,还是不对,求高手解答。
下面是Address类和配置文件,以及测试类
package dao;

import java.math.BigDecimal;

public class Address
{
private Integer addressId;

private String addressDetail;

public Address(){

}

public Address(String addressDetail){

this.addressDetail=addressDetail;
}

public Integer getAddressId()
{
return addressId;
}

public void setAddressId(Integer addressId)
{
this.addressId = addressId;
}

public String getAddressDetail()
{
return addressDetail;
}

public void setAddressDetail(String addressDetail)
{
this.addressDetail = addressDetail;
}


}


<hibernate-mapping>
<class name="dao.Address" table="address_inf">
<id name="addressId" type="java.lang.Integer">
<column name="address_id"></column>
<generator class="native">
<param name="sequence">testsequence</param>
</generator>
</id>
<property name="addressDetail" type="java.lang.String">
<column name="addressDetail"></column>
</property>
</class>
</hibernate-mapping>


package dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class TestManytoOne
{
public static void main(String[] args)
{
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Testtb user = new Testtb();
Address a = new Address("耶路撒冷");
user.setId("00000000001");
user.setName("ddddddddd");
user.setAddress(a.toString());
session.persist(user);
Address a2 = new Address("流沙河");
user.setAddress(a2.toString());
tx.commit();
session.close();

}


}


附带下user即Testtb对的类及配置文件

package dao;

public class Testtb implements java.io.Serializable
{


private String id;

private String name;

private String address;

public Testtb()
{
}

public Testtb(String id,String name){
this.id=id;
this.name=name;
}

public String getId()
{
return id;
}



public void setId(String id)
{
this.id = id;
}



public String getName()
{
return name;
}



public void setName(String name)
{
this.name = name;
}

public String getAddress()
{
return address;
}

public void setAddress(String address)
{
this.address = address;
}



}

<hibernate-mapping>
<class name="dao.Testtb" table="TESTTB" dynamic-insert="true" dynamic-update="true">
<id name="id" type="java.lang.String">
<column name="ID" length="30" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="30" />
</property>
<many-to-one name="address" cascade="all" class="dao.Address" column="address_id"></many-to-one>
</class>
</hibernate-mapping>
...全文
258 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
昆卡卡 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liutianxiong888 的回复:]
user.setAddress(a.toString());
user.setAddress(a2.toString());
问题估计是出在这里出现的!
user类中的address为String对象,但a是一个Address对象!调用它的toString()你会得到什么?肯定不会是new Address("")中的值,搞不懂你为什么要把address设为String类型,应该是Addres……
[/Quote]

谢谢,我呆了,是我自己没弄清楚
贪睡的兔子 2011-07-07
  • 打赏
  • 举报
回复
<column name="ID" length="30" 这里要小写吧 是反向工程自动生成的吧 ,可以设置一下ID 小写,
Spring89 2011-07-07
  • 打赏
  • 举报
回复
user.setAddress(a.toString());
user.setAddress(a2.toString());
问题估计是出在这里出现的!
user类中的address为String对象,但a是一个Address对象!调用它的toString()你会得到什么?肯定不会是new Address("")中的值,搞不懂你为什么要把address设为String类型,应该是Address类型!
humanity 2011-07-07
  • 打赏
  • 举报
回复
把完整的异常贴出来,看它说的”Object" 是什么对象,"instance of" 后面说的类型又是什么类型。
昆卡卡 2011-07-07
  • 打赏
  • 举报
回复
求高手解答啊,

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧