我有一个mysql 5 DB和一个休眠4应用程序

我使用这种方法来更新某个实体

public void executeNamedQuery(String namedQuery,Map params) {
    if(params != null){
        try{
            getSession().getNamedQuery(namedQuery).setProperties(params).executeUpdate();
            getSession().flush();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    else{
        getSession().getNamedQuery(namedQuery).executeUpdate();
    }
}


这就是调试器写的

Hibernate: update announcement set status=?, dcp_id=? where announcement_id=?


当我打开mysql日志表时,我在进来的查询中找到此查询

update announcement set status=-6, dcp_id=149714 where announcement_id=81


但该行未更新,当我在工作台中执行时,它工作正常。

是什么引起了这里的问题?

最佳答案

我不知道executeNamedQuery怎么回事,但是您的更改似乎没有提交到数据库。在这种情况下,upate将在事务超时后回滚。

10-06 13:44