[code="java"]@Entity
@org.hibernate.annotations.Entity(dynamicUpdate=true,dynamicInsert=true)
public class TestA {
private int id;
private String title;
private String content;
private Date date;
...........
}[/code]
[size=large]@org.hibernate.annotations.Entity(dynamicUpdate=true,dynamicInsert=true) 我加了这条Annotation但是做实验更新的时候为什么还是把所有字段给更新了啊?[/size]
对不起啊,hibernate基本没用过,之前的回答就下了个文档看了看。
刚看了下hibernate,我试了下,3.3.2版的,@org.hibernate.annotations.Entity(dynamicUpdate=true)这个可以部分更新。如果你全部更新了,你检查下是不是跨session的update。如果是跨session的,请用merge方法进行绑定,再更新。
建议使用HQL。
本人hibernate新手,见谅。
org.hibernate.annotations.Entity
文档的解释:
• dynamicInsert: allow dynamic SQL for inserts
• dynamicUpdate: allow dynamic SQL for updates
说明使用的是动态SQL,不是带问号的static SQL。
不知道你问的是什么意思。“所有字段给更新了”是指什么?
如果在同一个session中查出来 然后更新 会动态生成sql;
如果在一个session中查出数据,然后在另一个session更新,会全部update,因为hibernate不知道哪些是你改过的