C# 如何在hibernate条件中将表自身连接几次?
我有一些实体的本质。它有很多属性(超过一百个)。我需要做些什么。过滤器的计数是无限的,一个属性可以有一些过滤器(例如“年龄>20和年龄<50”)。问题是,在hibernate标准中,我不能任意多次附加属性表。第一次加入实体字段时,第二次无法使用此字段 创建标准:C# 如何在hibernate条件中将表自身连接几次?,c#,hibernate,join,nhibernate-criteria,icriteria,C#,Hibernate,Join,Nhibernate Criteria,Icriteria,我有一些实体的本质。它有很多属性(超过一百个)。我需要做些什么。过滤器的计数是无限的,一个属性可以有一些过滤器(例如“年龄>20和年龄
var attributeType = typeof(Attribute);
var criteria = tr.CreateCriteria(attributeType, "ATTRIBUTE");
criteria
.CreateAlias("Essence", "ESSENCE", NHibernate.SqlCommand.JoinType.RightOuterJoin)
.CreateAlias("SomeModel", "SOME_MODEL", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Add(Restrictions.And(
Restrictions.Eq("SOME_MODEL.Code", someCode),
Restrictions.IsNull("ESSENCE.SomeParameter")));
...
这里需要属性对其进行排序
for (int i = 0; i < filters.Count; i++)
{
string attributeColumnName = "ATTRIBUTE_" + i.ToString();
criteria
.CreateAlias("Essence.EssenceAttribute",
attributeColumnName,
NHibernate.SqlCommand.JoinType.LeftOuterJoin,
Restrictions.EqProperty("ESSENCE.Id", attributeColumnName + ".EssenceId"))
.Add(Restrictions.Eq(
attributeColumnName + ".AttributeId",
(long)filters[i].AttributeId))
.Add(Restrictions.Eq(
attributeColumnName + ".Value",
filters[i].Value));
}
for(int i=0;i
当过滤器只有一个过滤器时,一切正常。若过滤器有两个,我将捕获错误(类似于“使用Essence.EssenceAttribute复制”)。我怎么能做到