java Hibernate 急!!!

[复制链接]
查看11 | 回复2 | 2009-1-8 17:23:08 | 显示全部楼层 |阅读模式
TbSort sort=new TbSort();

sort.setFatherId(88);

sort.setName("44");

TbMerchandise merchandise=new TbMerchandise();

merchandise.setId(4);

merchandise.setName("41");

merchandise.setPrice(Float.parseFloat("41"));

merchandise.setProducingArea("41");

merchandise.setSort(sort);

sort.getMerchandises().add(merchandise);

merchandise.setSort(sort);



try {

tx = session.beginTransaction();

System.out.println("insert1");

session.save(sort);

System.out.println("insert2");

tx.commit();
错误:Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
为什么 保存会有错误呢
当时找到的原话是:
The JDBC driver is telling Hibernate that it did not update any rows as a result of Hibernate 's INSERT or UPDATE. Hibernate reasonably enough thinks that this cannot be correct.
注意unsaved-value是个很重要的属性。Hibernate通过这个属性来判断一个对象应该save还是update,如果这个对象的id是unsaved-value的话,那说明这个对象不是 persistence object要save(insert);如果id是非unsaved-value的话,那说明这个对象是persistence object(数据库中已存在),只要update就行了。
你可以Debug跟一下你的代码,看看在
session.update(obj);
的时候,obj的主键的值是不是按你定义的那样,obj可以被hibernate认为是一个已经持久化在数据库里的对象

回复

使用道具 举报

千问 | 2009-1-8 17:23:08 | 显示全部楼层
id是手动分配的字段吗楼主,如果不是,merchandise.setId(4); 去掉试试楼主...
回复

使用道具 举报

千问 | 2009-1-8 17:23:08 | 显示全部楼层
重新配置你的连接池吧,或许驱动包没加载。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行