如何在hibernate2中执行这样一条UPDATE语句

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:46:58
程序如下:
String sql ="update TABLE=:TABLE set content=replace(content,'OLD=:OLD','NEW=:NEW')";
try{
tx = session.beginTransaction();
Query query=session.createQuery(sql);
query.setString("TABLE", type);
query.setString("OLD", old);
query.setString("NEW", myNew);
query.list();
tx.commit();
}
异常:query must begin with SELECT or FROM: updat...

现在我想执行一条:update TABLE=:TABLE set content=replace(content,'OLD=:OLD','NEW=:NEW')
这样的语句,用hibernate该怎么做?
我是想把一个表中所有包含某些关键字的地方替换掉.
怎可能还换hibernate3,我项目都快写了!那我还不如直接做个直连省事呢!

hibernate2不行吧,建议你还是看看hibernate3吧,不要浪费时间呀,hibernate3是可以的,它提供DML式的HQL语句,可执行update、delete形式的语句,是executeUpdate()方法。

把你的程序改一下:
String sql ="update TABLE=:TABLE set content=replace(content,'OLD=:OLD','NEW=:NEW')";
Transaction tx = session.beginTransaction();
try{
Query query = session.createQuery(sql);
query.setString("TABLE", type);
query.setString("OLD", old);
query.setString("NEW", myNew);
query.executeUpdate();
tx.commit();
}catch (Exception e)
{

}

HIBERNATE是面向对象的框架,HQL语句里面不能识别UPDATE关键字,只有UPDATE方法,在方法里传递你要更新的对象就行了。

你要学习Hibernate的“SQL语法”和传统的sql类似,叫HQL

hibernate3可以,用3好了,技术当然走越前越好啊,没越后越好的

query.list()是一个查询的方法 也就是说把结果变为list
而更新是要调用query.executeUpdate()