Hibernate createSQLQuery() - list()和executeUpdate() - 删除和选择语句

时间:2015-07-23 06:51:28

标签: java hibernate

我们正在使用以下SQL语句并通过createSQLQuery()执行 - list()而不是executeUpdate()

a)从员工中删除nbr in('1','2','3')
b)从emp_details中删除empNbr =(从员工中选择nbr,其中name ='Somu')

这两个查询在SQL Client中都能正常工作,但会抛出以下异常

for i in $(git branch | sed 's/\*//'); do git checkout $i; git ls-files | grep -q YOURFILE ; if [ $? -eq 0 ] ; then echo "File found in branch: $i"; fi; done

查询没有问题,因为查询在SQL客户端中工作正常。

问题:

1)我们可以通过createSQLQuery() - list()传递或执行删除脚本吗? 2)使用createSQLQuery() - list()删除脚本是错误的吗?

2 个答案:

答案 0 :(得分:2)

如果要执行删除语句,则必须在executeUpdate()返回的查询上调用list而不是createSQLQuery()

答案 1 :(得分:2)

对任何更新或删除脚本使用.list()是错误的做法。

如上所述,你需要使用返回类型为int的.executeUpdate,返回受executeUpdate命令影响的行数。

SQLQuery sqlQuery = session.createSQLQuery("delete from employee where nbr in (1,2,3)"); sqlQuery.executeUpdate();

使用命名参数在查询中传递参数也是一种很好的做法。 (阅读this以供参考)