Hibernate部分更新session.update多种使用方式

在hibernate中使用update会将所有字段更新一遍,有些时候我们只需要更新某一些字段,一下提供四种方法.

1.XML中设置property 标签 update = "false" ,如下:我们设置 name 这个属性在更改中不做更改

<property name="name" update="false"></property> 
或者 在Annotation中 在属性GET方法上加上@Column(updatable=false)
@Column(updatable=false)  
    public int getAge() {  
        return age;  
    }  

缺点:我们的需求是不断变换的,我们不能保证每次只保证某个值不被修改,简言之,不灵活。

2.第2种方法··使用XML中的 dynamic-update="true" ,dynamic是动态的意思具体操作可以看这个点击打开链接,这个方法我比较提倡

3.第三种方式:使用HQL语句

public void updateState(CheckIn ch) {
Session session = this.getHibernateTemplate().getSessionFactory()
.openSession();
Transaction tx = session.beginTransaction();
String hql = "update CheckIn ch set ch.state = :state where ch.id= :id";
Query query = session.createQuery(hql);
query.setInteger("state", ch.getState());
query.setInteger("id", ch.getId());
query.executeUpdate();

tx.commit();
session.close();

}

可以根据具体的修改对象进行修改。

缺点:我认为有时候我们往往想让程序自动判断哪个为空哪个不为空(我们只需要修改我们所要修改的即可)

4.先获取对象,再通过set方式赋值

我们根据id先获取需要修改的对象,然后通过set修改所需要修改的值

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/80737452