解决Hibernate4执行update操作,不更新数据的问题

后台封装java对象,使用hibernate4再带的update,执行不更新数据,不报错。

下面贴出解决方法:

失败的方法

hibernate自带update代码:(失效)

Session session = this.getSessionFactory().getCurrentSession();
ession.update(obj);

成功的方法

使用hql语句执行:

public void updateUser(String name, String tel,            String msg, Date date){String hqlStr = "UPDATE User a"
                + " SET a.userName=? ,"
                + "  a.createTime=? ,"
                + "  a.phone=?, "
                + "  a.backMsg=? "
                + " WHERE a.userId=?";
        Session session = this.getSessionFactory().getCurrentSession();
        session.createQuery(hqlStr).setString(0, name)
            .setTimestamp(1, date).setString(2, tel).setString(3, msg).setString(4, id).executeUpdate();

    }}
时间: 2024-08-09 04:47:11

解决Hibernate4执行update操作,不更新数据的问题的相关文章

svn执行update操作后出现:Error : Previous operation has not finished; run 'cleanup' if it was interrupted.

svn执行update操作后出现: Error : Previous operation has not finished; run 'cleanup' if it was interrupted. Error : Please execute the 'Cleanup' command. 提示要去执行下Cleanup命令,于是就去执行下Cleanup命令,结果出现了: 于是,解决方法只能是清空掉svn的队列.具体操作步骤如下: 1.下载sqlite3.zip 2.找到你svn项目下的.svn,

执行 update操作的时候有报错 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> show full processlist; #查看问题的线程!!!! 找到异常进程的ID 然后kill 掉: mysql> kill xxxxxxx; #xxxxxx是ID号 然后再次执行update执作,问题解决!!

java操作mongodb——更新数据

Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt("age", 20)过滤出多条数据,也只会取出一条进行更新 更新操作符 名称 描述 $inc 增加一个指定值 $mul 乘以一个指定值 $rename  重命名 $setOnInsert  更新操作对现有的文档没有影响,而是新插入了一个文档,则在这新插入的文档中加上指定字段 $set 修改值

Neo4j 第五篇:批量更新数据

相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时,大多数时间耗费在连接数据库和打开事务上,高效的做法是利用Neo4j提供的参数(Parameter)机制和UNWIND子句:在一次数据更新中,进行一次连接,打开一次事务,批量更新数据:参数用于提供列表格式的数据,UNWIND子句是把列表数据展开成一行一行的数据,每行数据都会执行结构相同的Cypher

Mysql更新数据时,报 “You can't specify target table 'message ' for update in FROM clause” 解决办法

报错的SQL为: delete from message where id not in  (select min(id) as id from message group by content); 报错信息的中文意思为:不能在FROM子句中更新  message表数据,原因是 "不能在从本表中查出数据范围后,然后直接更新本表", 解决方法思路是,让数据库认为,你查出的数据范围,是不从本表中查出来的,实现步骤如下: 1.用as,给查出的数据表,设置别名为a,即 (select min(

Oracle中 “ORA-14551: 无法在查询中执行 DML 操作” 如何解决

在编写一个数据库函数时,方法实现需要查询后进行修改,出现ora-14551的错误 create or replace function fun_DxcBillSn(tabType integer,tabName varchar2,fieldStr varchar2)return integer is serialSn integer; maxVal integer; nowMonth varchar(20); begin --获取当前时间的月份-- select to_char(Sysdate,

winform批量更新数据_长时间的执行会导致界面卡死

原文:winform批量更新数据_长时间的执行会导致界面卡死 前言:使用winform触发一个事件后执行的代码,如果耗时非常长,则会导致窗口界面假死!  本人最近通过winform窗体执行一项:需要批量更新一批数据库的数据的操作的任务时,由于数据量达到百万级别,非常耗时,只能慢慢更新,慢慢执行. 但是,在执行的过程遇到了一个奇葩的问题:窗体在调试状态下,代码可以慢慢循环执行,没出现异常.  但是我单独运行EXE程序时,就必现:程序假死,未响应状态. 后台百度虽然没有找到直接的答案,但是也发现了原

Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果

我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT--FOR UPDATE获得可更新结果.按照错误提示的信息我们可以采用两种解决办法: 解决办法1:在查询语句后面写上for update,如:select * from 表名 for update: 解决办法2:在查询的列中使用rowid属性,如:select rowID, 表名.* from 表名

C# DataAdapter.Update() 无法更新数据表中删除的数据行

用DataAdapter.Update() 方法更新删除了部分DataRow 的 DataTable .但是数据库中的数据没有随着更新而变化. 原因:DataTable 删除 DataRow 时,使用的是DataTable.Rows.Remove(DataRow ) 或 DataTable.Rows.RemoveAt(DataRowIndex) 方法. 解决方法:使用 DataTable.Rows[rowIndex].Delete() ; 方法删除数据. 详解如下: DataAdapter.Up