如何在Hibernate中运行mysql更新批量查询?

时间:2018-05-26 07:10:32

标签: java mysql sql spring hibernate

我有一个mysql(SQL)批量查询:

START TRANSACTION;

UPDATE home SET currentSeq = 2 WHERE resId = '6hiuxhqkw4s1bta9a';
UPDATE home SET currentSeq = 4 WHERE resId = 'hpvihvzk0vainpkgg';
UPDATE home SET currentSeq = 6 WHERE resId = 'krfswe6wohjtugmtd';
UPDATE home SET currentSeq = 3 WHERE resId = 'tcybuiuulkju5wjre';
UPDATE home SET currentSeq = 7 WHERE resId = 'sgs4gr4v6aepuwdgq';

COMMIT;

上面的代码在MySQl 5.7终端上运行时工作正常但是,我试图从Hibernate和Hibernate运行相同的查询给出一个例外 - &#34;不支持嵌套查询&#34;。< / p>

我的Hibernate代码:

String queryToBeUpdate = "START TRANSACTION;\n" + 
            "\n" + 
            "UPDATE home SET currentSeq = 2 WHERE resId = '6hiuxhqkw4s1bta9a';\n" + 
            "UPDATE home SET currentSeq = 4 WHERE resId = 'hpvihvzk0vainpkgg';\n" + 
            "UPDATE home SET currentSeq = 6 WHERE resId = 'krfswe6wohjtugmtd';\n" + 
            "UPDATE home SET currentSeq = 3 WHERE resId = 'tcybuiuulkju5wjre';\n" + 
            "UPDATE home SET currentSeq = 7 WHERE resId = 'sgs4gr4v6aepuwdgq';\n" + 
            "\n" + 
            "COMMIT;";

Query q =sessionFactory.getCurrentSession().createSQLQuery(queryToBeUpdate);
q.executeUpdate();

1 个答案:

答案 0 :(得分:0)

您可以像这样将UPDATE与CASE组合在一起:

var message = string.Empty;
using (var sr = new StreamReader("/Content/email.html"))
{
  message = sr.ReadToEnd();
}

(作为批量更新查询)

相关问题