强制Hibernate不要将sp_execute用于非查询

时间:2011-12-21 16:43:02

标签: sql-server hibernate deadlock database-deadlocks

有没有办法强制Hibernate不使用sp_execute?

考虑这段代码

String queryString = "SET DEADLOCK_PRIORITY LOW;";
SQLQuery query = session.createSQLQuery(queryString);
return query.executeUpdate();

变成 sp_prepare ,然后是 sp_execute ,这就失败了:执行此语句后,会话死锁优先级又回到NORMAL

在.NET中,以下代码将直接执行语句,会话的优先级保持低(根据需要)

command = new SqlCommand("SET DEADLOCK_PRIORITY LOW", _Connection);
command.ExecuteNonQuery();

如何强制Hibernate以相同的方式发送语句?

1 个答案:

答案 0 :(得分:1)

我找到了实现这一目标的方法。

String statementText = "SET DEADLOCK_PRIORITY LOW;";
Statement s = session.connection().createStatement();
s.execute(statementText);

但是,connection()是“已弃用并计划在Hibernate 4.x中删除”(已讨论here