hibernate save方法但是第二次save变成更新数据了

作者&投稿:吉乖 (若有异议请与网页底部的电邮联系)
hibernate save 第一次insert 第二次update~

save的时候主键是采用hibernatge自身的主键策略去生成主键,而update的时候需要先去判断主键是否存在或者重复,如果重复就会报异常,所以最好先get出来,在把需要修改的字段替换掉后保存

saveorupdate(); 这个方法是设置了主键 他就做修改 。 没有设置主键就做增加
save()也是因为你设置了主键才会做修改。为什么什么会做修改看你是什么状态
Hibernate主要有三种状态:
自由态(新建态):在数据库中是不会存在该对象的,当我们使用session.delete()方法可使对
象变为自由态
持久态(托管态):则数据是处于了持久的内存中的,数据库中有数据的,当我们改变处于持
久态的对象时,数据库中的也会改变可以变为持久态的方法是:
get(),load(),save(),update(),saveOrUpdate(),merge(),(一级缓存)
游离态:数据库中有可能存在的数据,通过session的close(),clear(),evict(Object)三个方法可以
将一个持久态的对象变为一个游离态的对象

hibernate的save方法:当主键一样的时候,第二次调用save方法就是执行更新操作的了。 、
就是这里:yhgwdz.setYhid(Integer.toString(yhid));

你有一个unquie的值设成一样了。

看下表结构的列属性。

你要知道save()是保存,commit()是提交。

session.save(pojo对象);
Transaction tx = session.beginTransaction();
tx.commit();

亲,问下,我也出现了这样的状况,我的两个表是一对多的关系,求助


白云矿区19579289094: hibernate的save方法不起作用 -
紫柏野菊:Hibernate在执行增删改操作时必须将其放入事务环境内运行,如果save方法不报错但却不添加,则肯定没有开启事务! Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();try{ session.save(...); tx.commit();}catch(Exception ex){ tx.rollback();}finally{ session.close();}

白云矿区19579289094: 为什么我hibernate只写了save()方法 ,但是数据库不仅会insert 还会进行update()操作. -
紫柏野菊: saveorupdate(); 这个方法是设置了主键 他就做修改 . 没有设置主键就做增加save()也是因为你设置了主键才会做修改.为什么什么会做修改看你是什么状态Hibernate主要有三种状态:自由态(新建态):在数据库中是不会存在该对象...

白云矿区19579289094: 关于hibernate中save的用法 -
紫柏野菊: 在配置文件中的set中写一个cascade=save-update 在代码中要先双向通知一下:如:A是一,B是多:a.setB(集合),b.setA(A的对象)就可以了

白云矿区19579289094: hibernate中的save方法疑问... -
紫柏野菊: 这种情况是这样的.修改这个对象的时候.要先把这个对象查出来,然后在表单那里写成隐藏的,在页面上不显示的.然后跟着表单提交过去就行了.这样是最好的.你也可以在页面提交的时候先通过 ID查询一下要修改的对象.对象取出后,再用页面提交的对象覆盖一下,当然要是不为空的才覆盖,也可以 .推荐第一种方法.

白云矿区19579289094: Hibernate中save方法是如何得来的
紫柏野菊: save()方法是hibernate的session 接口中的一个方法,要想使用这个方法,就必须得到一个session得实例.

白云矿区19579289094: hibernate save方法但是第二次save变成更新数据了 -
紫柏野菊: hibernate的save方法:当主键一样的时候,第二次调用save方法就是执行更新操作的了. 、 就是这里:yhgwdz.setYhid(Integer.toString(yhid));

白云矿区19579289094: Hibernate中使用save()方法后,提交事务没有反应 -
紫柏野菊: Transaction tran=session.begionTransaction(); ................................................................tran.commit(); 声明事务,最后在save()完成之后,commit();

白云矿区19579289094: 使用hibernate的save方法保存数据到MySQL数据库为什么存入的时间会增加一秒 -
紫柏野菊: 这种一般不好处理,通常处理办法就是让数据库你处理时间,在存入时直接让数据库生成时间就没有问题了,或者在存入数据时去数据库查询下当前的数据库时间.

白云矿区19579289094: 怎么用hibernate七个步骤向数据库里写入数据save方法
紫柏野菊: 先定义数据类型,然后定义数据入口,接着是输入, 保存,校验,等等

白云矿区19579289094: Hibernate中save方法是如何得来的 -
紫柏野菊: 你是指电脑的休眠功能,对吧?休眠,在广义上包括挂起到内存(STR,也就是待机)和挂起到硬盘(Suspend to Disk,简称STD)两种,而我们通常所指的休眠其实是STD.当电脑进入休眠状态时,电脑首先将内存中的状态复制到硬盘,然...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网