public static void testGet(){
Session s = null;
Transaction ts = null;
try {
s = HibUtil.getSession();
ts= s.beginTransaction();
User u = (User) s.get(User.class, 1);
System.out.println(u.getUname());
u.setUname("bbb");
ts.commit();
} finally{
if(s!=null){
s.close();
}
}
}
public static void main(String[] args) {
testGet();
}1.先设定u在表中已存在,uname原值为aaa,hibernate.cfg.xml中已配置show_sql
2.因为get()方法获取到的u对象已是持久态,所以在通过get()获取到u后,u.setUname("bbb")此行代码会生成一条update语句来同步数据库中内容
问题:
在不改变u.setUname()中set的值的情况下(如保持bbb不变),如果多次运行程序,只有第一次运行会正常生成update语句因为要把原值aaa变为bbb,为什么之后运行却不再生成update语句?持久态对象一旦调用set方法后不都是应该生成update语句同步数据到数据库中的吗?难道set方法set的值如果和持久对象中的值一样就不再生成update语句了?
解决方案 »
- dialog如何根据不同操作系统设置不同的高
- SpringDM+WebService 报错。http://cxf.apache.org/jaxws
- jsp如何判断xml是否存在
- 上传文件,是中文名的就出现乱码
- hessian和spring继承
- 求教spring的配置问题,请多指教。
- 急:哪位达人遇到过Spring,Hibernate下XDoclet配置component的问题
- 数据库闪断问题
- 帮忙看看是什么错误?
- Nginx+FFMpeng+rtmp推流HLS,rtmp正常播放,HLS不能播放
- JavaFX程序渲染不同电脑出现的意外情况,模糊问题,求解!
- 请问一下各路大神:String a="123";String b=a;一共创建了多少个对象?
https://blog.csdn.net/abckingaa/article/details/81176524