gpt4 book ai didi

nhibernate - 使用按位运算符时 HQL 到 CriteriaQuery

转载 作者:行者123 更新时间:2023-12-04 16:41:46 24 4
gpt4 key购买 nike

如何将其转换为 CriteraQuery:

select n
from TagRegistration t
join t.Tag n
where t.Status & :status > 0
order by count(t.ID) desc
, n.Name asc

最佳答案

以下是使用标准 API 的方法:

[Flags]
enum Bar{
A = 0x01,
B = 0x02,
C = 0x04
}

var criteria = this.Session.CreateCriteria<Foo>()
.Add( BitwiseFlags.IsSet( "Bar", Bar.A | Bar.C ) );

使用:
public class BitwiseFlags : LogicalExpression
{
private BitwiseFlags( string propertyName, object value, string op ) :
base( new SimpleExpression( propertyName, value, op ),
Expression.Sql( "?", value, NHibernateUtil.Enum( value.GetType() ) ) )
{
}

protected override string Op
{
get { return "="; }
}

public static BitwiseFlags IsSet(string propertyName, Enum flags)
{
return new BitwiseFlags( propertyName, flags, " & " );
}
}

应生成以下输出 where 子句:
 FROM _TABLE
WHERE (this_.Bar & 5 = 5)

这应该为您提供设置了标志 Bar.A 和 Bar.C 的行(不包括其他所有内容)。您也应该能够将它与连接和分离一起使用。

关于nhibernate - 使用按位运算符时 HQL 到 CriteriaQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com