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修改所需要修改的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值