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']
有人可以帮我解决这个问题吗
答案 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";