hibernate查询使用nolock时出现识别错误

A recognition error occurred when nolock is used in hibernate query

我有一个简单的休眠查询,在查询中使用了 nolock。我收到错误 - 发生识别错误并且休眠错误抛出异常:'NHibernate.Hql.Ast.ANTLR.QuerySyntaxException' in NHibernate.dll。它没有锁就可以工作。我不想使用

<property name="connection.isolation">ReadUncommitted</property>

因为我必须只对特定的 table 应用 nolock。

下面是hql查询-

select d from Users d with (nolock) where d.Userid = 2 

我错过了什么吗?

HQL 将不支持直接 with (nolock)。但是我们可以使用原生的SQL查询。

因此,例如,而不是像这样(获取用户列表):

var hql    = "select d from Users d with (nolock) where d.Userid = 2";
var query  = session.CreateQuery(sql);
var result = query.List<User>();

我们需要使用原始 sql API

var sql    = "select d.* from schema.UserTable d with (nolock) where d.user_id = 2 ";
var query  = session.CreateSQLQuery(sql);
var result = query
    .AddEntity(typeof(User))
    .List<User>();

以防万一,我们知道通过 ID 只会返回一个用户。我们可以使用 UniqueResult<> 而不是 List