一次执行多个本机查询

Jan*_*nne 10 java mysql hibernate native

我想知道是否可以SQLQuery#executeUpdate()在Hibernate(3.2)中使用一次调用执行几个以分号分隔的SQL更新查询.

我有包含多个更新的字符串,如下所示:

String statements = "UPDATE Foo SET bar=1*30.00 WHERE baz=1; 
                     UPDATE Foo SET bar=2*45.50 WHERE baz=2;...";
Run Code Online (Sandbox Code Playgroud)

我正在努力做到

 Query query = session.createSQLQuery(statements);
 query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

但是不断收到以下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 
'UPDATE Foo SET bar=Y WHERE ' at line 3
Run Code Online (Sandbox Code Playgroud)

如果我执行statements手工的内容我没有错误,所以我假设多个分号分隔的查询在Hibernate或JDBC的某处造成麻烦.

分割statements字符串并createSQLQuery(statement).executeUpdate()为每一行单独执行是否更好?

dog*_*ane 5

一种替代方法是使用CASE语句。例如:

UPDATE Foo
    SET bar = 
    CASE baz
       WHEN 1 THEN 'X'
       WHEN 2 THEN 'Y'
    END CASE
WHERE baz in (1,2)
Run Code Online (Sandbox Code Playgroud)


Raf*_*ael 1

我想说,你至少必须用单引号包含 X 和 Y。