hibernate 抛出的object references an unsaved transient instance错误

 Spring与hibernate集成时候,Dao层一般继承hibernateDaoSupport类,由spring来管理session的生命周期,在使用的时候,当service层调用dao层时候,servcie传参数一般都是非持久化po,所以在保存含有外键关联的时候要有一个原则:要保存的表里面含有的外键实体必须是Po对象 否则会抛出一个InvalidDataAccessApiUsageException异常 :object references an unsaved transient instance - save the transient instance before flushing,所以必须让外键也是PO对象。例子
 Cat cat=new Cat();
Animal a=new Animal();
a.setAnimal(cat);
BaseDao.save(a);



此时会抛以上错误

Cat cat=CatDao.Load(Cat.class,id);
Animal a=new Animal();
a.setAnimal(cat);
BaseDao.save(a);



此时不会出错

我也不知道这个什么hibernate的什么原理,希望高手看到了能够讲讲其中的原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值