Hibernate查询语言更新错误

时间:2010-11-24 08:18:27

标签: hql

Query query = session.createQuery("Update Contact set firstname = 'sdf' where firstname= 'Deepak'");
int result = query.executeUpate();

执行上述查询时,我收到以下错误

    expecting DOT, found '=' near line 1, column 30 
[Update Contact set firstname = 'sdf' where firstname= 'Deepak']

有人可以帮我解决这个问题吗

1 个答案:

答案 0 :(得分:2)

您正在使用SQL编写查询,而不是HQL。 HQL中的批量更新看起来像这样:

String query = "update Contact c set c.firstname = :newName where c.name = :oldName";
int result = s.createQuery( query )
        .setString( "newName", "sdf")
        .setString( "oldName", "Deepak" )
        .executeUpdate();

但是,除非有很多名为deepak的行,否则这是错误的方法。如果您只是更新一个对象,最好是a)执行返回此对象的查询,b)仅通过myobject.firstname = "sdf";

更新对象
相关问题