hibernate 更新问题! 我要用session.update(sForm)这个方法更新一条记录sForm是一个对象,但我的数据库中的表里面有多条记录,现在我用这个方法显然数据库不知道我要更新哪条记录想问问用update()这个方法怎么更新数据库中的一条记录! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查看对象是什么状态(持久,游离 ,瞬时) 持久和游离根据(id version 等好多标示【hibernate好多标示 我只能看源代码】)和数据库的记录关联,然后进行更新。 瞬时的只能insert 这个stuForm是用get方法查到的一条记录,让每个字段的值显示在了表单中!然后我点提交的时候跳转到update_action中里面调用更新方法.但现在更新不了,下面是代码看看哪出问题了!谢谢!public StuInfoForm loadById(int id) { Session session = null; Transaction tr = null; StuInfoForm sForm = null; try { session = HibernateUtils.getSession(); tr = session.beginTransaction(); sForm = (StuInfoForm) session.get(StuInfoForm.class, id); tr.commit(); } catch (Exception e) { } return sForm; }//更新方法public void updateById(StuInfoForm sForm,int id) { Session session = null; Transaction tr = null; try { session = HibernateUtils.getSession(); tr = session.beginTransaction(); session.update("sForm", id);//这句写的好像有问题但不知道怎么改! tr.commit(); } catch (Exception e) { System.out.println("更新失败"); tr.rollback(); e.printStackTrace(); }finally{ if(session != null) session.close(); } }<% StuInfoForm stuForm = (StuInfoForm)session.getAttribute("stuForm"); String name = stuForm.getSname(); int sno = stuForm.getSno(); String sex = stuForm.getSex(); String phone = stuForm.getPhone(); String e_mail = stuForm.getE_mail(); int id = stuForm.getId(); session.setAttribute("id",id); %> <form action="update.do" method="get"> <table border="1" align="center"> <tr> <td>name</td> <td><input type="text" name="sname" value="<%=name%>"></td> </tr> <tr> <td>sno</td> <td><input type="text" name="sno" value="<%=sno%>"></td> </tr> <tr> <td>sex</td> <td><input type="text" name="sex" value="<%=sex%>"></td> </tr> <tr> <td>e_mail</td> <td><input type="text" name="e_mail" value="<%=e_mail%>"></td> </tr> <tr> <td>phone</td> <td><input type="text" name="phone" value="<%=phone%>"></td> </tr> <tr> <td></td> <td><input type="submit" value="确定"><input type="reset" value="重置"></td> </tr> </table> </form> //更新方法 public void updateById(StuInfoForm sForm,int id) { Session session = null; Transaction tr = null; try { session = HibernateUtils.getSession(); tr = session.beginTransaction(); StuInfoForm sif = session.load(StuInfoForm.class,id);在这里把需要修改的属性赋值给sif就可以了。sif.setName(sForm.getName());tr.commit(); } catch (Exception e) { System.out.println("更新失败"); tr.rollback(); e.printStackTrace(); }finally{ if(session != null) session.close(); } } session.update("sForm", id);我一般是先赋值 然后调用update方法传 sForm 这个对象sForm.setXxx(XXX);session.update(sForm); public void update(SubInfoForm form){ // 连接 事务省略 session.merge(form);// form在数据库中必须有对应值} 先得到更新数据的主键即唯一标识,然后将他set到对应对象属性中在执行更新,后台其实就是翻译成SQL语句 关于session的问题 高分请求高手留步,帮忙解释啊下JMX的问题 生成缩略图失真问题?? 大家是如何解决的????? 哪里错了,在线等......... 胖客户端与瘦客户端 菜鸟问题:Tomcat找不到Servlet 有没有什么办法搜索局域网机器的IP地址?谢谢大家! IntellJ IDEA 4.5 + tomcat5.5 运行项目的时候出现错误 maven nexus安装失败的 数据库里设计的字段有2位小数,不想显示8.00,怎么办? 惊人!!!!来看看“淘宝网”和csdn等知名网站经过w3c标准校验后的结果!! java工作区
然后我点提交的时候跳转到update_action中里面调用更新方法.
但现在更新不了,下面是代码看看哪出问题了!谢谢!public StuInfoForm loadById(int id) {
Session session = null;
Transaction tr = null;
StuInfoForm sForm = null;
try {
session = HibernateUtils.getSession();
tr = session.beginTransaction();
sForm = (StuInfoForm) session.get(StuInfoForm.class, id);
tr.commit();
} catch (Exception e) {
}
return sForm;
}//更新方法
public void updateById(StuInfoForm sForm,int id) {
Session session = null;
Transaction tr = null;
try {
session = HibernateUtils.getSession();
tr = session.beginTransaction();
session.update("sForm", id);//这句写的好像有问题但不知道怎么改!
tr.commit();
} catch (Exception e) {
System.out.println("更新失败");
tr.rollback();
e.printStackTrace();
}finally{
if(session != null)
session.close();
}
}<%
StuInfoForm stuForm = (StuInfoForm)session.getAttribute("stuForm");
String name = stuForm.getSname();
int sno = stuForm.getSno();
String sex = stuForm.getSex();
String phone = stuForm.getPhone();
String e_mail = stuForm.getE_mail();
int id = stuForm.getId();
session.setAttribute("id",id);
%>
<form action="update.do" method="get">
<table border="1" align="center">
<tr>
<td>name</td>
<td><input type="text" name="sname" value="<%=name%>"></td>
</tr>
<tr>
<td>sno</td>
<td><input type="text" name="sno" value="<%=sno%>"></td>
</tr>
<tr>
<td>sex</td>
<td><input type="text" name="sex" value="<%=sex%>"></td>
</tr>
<tr>
<td>e_mail</td>
<td><input type="text" name="e_mail" value="<%=e_mail%>"></td>
</tr>
<tr>
<td>phone</td>
<td><input type="text" name="phone" value="<%=phone%>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="确定"><input type="reset" value="重置"></td>
</tr>
</table>
</form>
public void updateById(StuInfoForm sForm,int id) {
Session session = null;
Transaction tr = null;
try {
session = HibernateUtils.getSession();
tr = session.beginTransaction();
StuInfoForm sif = session.load(StuInfoForm.class,id);
在这里把需要修改的属性赋值给sif就可以了。
sif.setName(sForm.getName());
tr.commit();
} catch (Exception e) {
System.out.println("更新失败");
tr.rollback();
e.printStackTrace();
}finally{
if(session != null)
session.close();
}
}
我一般是先赋值 然后调用update方法传 sForm 这个对象sForm.setXxx(XXX);
session.update(sForm);
// 连接 事务省略
session.merge(form);// form在数据库中必须有对应值
}