关于hibernate怎么判断是更新还是插入

剑客2 2011-10-21 09:48:19
不知道你这个记录的主键在数据库中有没有,怎么用hibernate判断,在线等!谢谢!非常感谢!
...全文
308 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kouyiSC 2011-10-21
  • 打赏
  • 举报
回复
直接传对象进去就可以用啦。。。。网上例子一堆。。。。
kouyiSC 2011-10-21
  • 打赏
  • 举报
回复
两种方式根据你的程序来选吧。
分析一下:
1. 如果你的表主键有自增的话,那么你这个记录的主键在数据库中是肯定没有的。。这时候肯定是插入。。
只有当你传入的对象包含主键值时,才可能是更新操作。
这种情况下。。你直接判断你传入的对象是否包含主键ID值,就能判断是更新还是插入。。
那就可以推测楼主的表没有主键自增。。。否则不可能不知道是更新还是插入。。。

2. 如果你的表没有主键自增的话,那说明你每次操作的对象都带有主键值。导致你不知道是更新还是插入。那么这个时候通常可以根据saveorupdate来走捷径。。或者通过查看主键值是否存在。。。然后再修改。。。

烈空小Y 2011-10-21
  • 打赏
  • 举报
回复
如果你在hibernate配置文件中配置了
<property name="show_sql">true</property>
<property name="format_sql">true</property>
他们的话,在控制台不就能很好的看到吗
还有就是你写hql语句的时候自己不清楚吗
nizhicheng 2011-10-21
  • 打赏
  • 举报
回复
好像也不能这么说,没定义自增 主键不能为NULL
[Quote=引用 5 楼 nizhicheng 的回复:]
那贴下你错误信息吗~~有肯能是主键问题~~表的主键没定义自增的话~~
就不能用saveOrupdate
[/Quote]
nizhicheng 2011-10-21
  • 打赏
  • 举报
回复
那贴下你错误信息吗~~有肯能是主键问题~~表的主键没定义自增的话~~
就不能用saveOrupdate
剑客2 2011-10-21
  • 打赏
  • 举报
回复
我用了saveorupdate就是出错,不知怎么搞的,谁可以给几个例子看看吗?
chris_zcl 2011-10-21
  • 打赏
  • 举报
回复
用ID通过find方法查询一下,看看返回是否为null呗~
nizhicheng 2011-10-21
  • 打赏
  • 举报
回复
楼上说的是 ~~~就是看你对象的主键ID 我记得有个 saveOrupdate方法 就是这样~~
而且很恶心 修改的对象必须通过主键来查找 否则对象修改 数据库是没有保存的
也有可能是我的事务代码本身没写好的关系
剑神一笑 2011-10-21
  • 打赏
  • 举报
回复
看你传入的实体主键ID是不是为null或“”啊
修改id肯定不为空的或者你直接用saveorupdate方法
剑客2 2011-10-21
  • 打赏
  • 举报
回复
我觉得saveorupdate就是你批量插入或者更新的时候,你的批量不能重复,不然出错,谢谢大家,我的问题解决了

67,513

社区成员

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

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