Dev Zone
偏执狂才能生存,人生/事业的路上需要再坚持一下
但是又怎么说得清坚持的结果,道得尽坚持的含义

今天做了一个测试,发现Hibernate的dynamic-update只在两种条件下生效:

1。同一session内,对已经persisit的对象进行update,这里的“已经persist”是指update之前先进行了create或者load调用。代码示例:

Session session = openSession();
User user 
= (User)session.load(User.class,new Long(12));
user.setAddress(
null);
session.update(user);
session.flush();

将hibernate配置成show_sql=true,可以看到update产生的sql语句。

2。不同session之间,update传入的对象是另一个session中的persist对象(对该对象调用了create或者load方法)。代码示例:

Session session1 = openSession();
User user 
= (User)session1.load(User.class,new Long(12));

Session session2 
= openSession();
user.setAddress(
null);
session2.merge(user);
session2.flush();


如果将session2.merge(..)改成update,则会更新所有可更新的属性。

posted on 2005-05-17 22:10 dev 阅读(2196) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问