hibernate的 merge()的用法

sky_hebiao 2009-07-15 02:47:31
怎样使用merge(),请给个实例,并且关键地方给予讲解,谢谢!
...全文
900 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yahunetbar 2010-02-01
  • 打赏
  • 举报
回复
TcpnsthistoryDAO tdao = new TcpnsthistoryDAO();
如果你用的spring 应该让spring加载才对
sky_hebiao 2009-07-15
  • 打赏
  • 举报
回复
这段程序写的有问题吗?
cxalxpks 2009-07-15
  • 打赏
  • 举报
回复
可能会有点问题,merge修改后还是持久态好像,与数据库有关联
sky_hebiao 2009-07-15
  • 打赏
  • 举报
回复
没有呀,如果是数据库又问题,会不会影响呢,我刚才查了下数据库,数据库被别人动了。里面select 报错。
ZhaoHuiZiXin 2009-07-15
  • 打赏
  • 举报
回复
String ifTemp 可能是空值.
sky_hebiao 2009-07-15
  • 打赏
  • 举报
回复
我这有个代码请大家看看写的有问题吗?
public int updateCpnstWS(String serviceNo, String ifTemp, String ifLast,
String bizFlag) {
System.out.println("Call Mathod : updateCpnstWS");
Session session = HibernateSessionFactory.getSession();
Transaction trans = session.beginTransaction();
try {
TcpnsthistoryDAO tdao = new TcpnsthistoryDAO();
Tcpnsthistory th = tdao.findById(Long.parseLong(serviceNo));
这里报了空指针 ----->> th.setIfTemp(Long.parseLong(ifTemp));
th.setIfLast(Long.parseLong(ifLast));
th.setBizFlag(Long.parseLong(bizFlag));
tdao.merge(th);
trans.commit();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
trans.rollback();
return -1;
}
return 1;
}
ZhaoHuiZiXin 2009-07-15
  • 打赏
  • 举报
回复
给 lz 讲解merge()的使用方法:

3. saveOrUpdate()保存或更新数据: 对象中如果有主键就修改, 如果没有主键就保存.
4. merge(): 他说的就是如果没有该条记录,则会被创建; 如果有该条记录,但内容有变,则会被修改; 相当于save or update.
merge 和saveOrUpdate不一样,当session中某持久化对象有id相同的两个纪录时,必须用merge,merge会在保存之前来合并记录,不然会报错。合并记录后的动作和 saveOrUpdate一样。

67,513

社区成员

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

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