下面的代码片段描述了我想要使用查询做什么,但它爆炸与上述错误。NHibernate.QueryException:重复的关联路径
有建筑物和AttributeValues之间的1对多的关系,我的目的是要找到具有的"Large"
一个AttributeValue
和"Blue"
一个AttributeValue
所有建筑物。
var attributeValueAlias1 = new AttributeValue();
var attributeValueAlias2 = new AttributeValue();
var result = repository
.CreateCriteriaFor<Buildings>()
.Join(o=>o.AttributeValues,()=> attributeValueAlias1)
.Join(o=>o.AttributeValues,()=> attributeValueAlias2)
.Add(() => attributeValueAlias1.Value == "Large")
.Add(() => attributeValueAlias2.Value == "Blue")
.List();
有几个帖子在那里,但没有一个解决问题的描述here和here。
我可以做这么一个成员资格测试使用criteria.GetCriteriaByAlias(alias)
增加,因此不会出现重复的别名错误,但那么只有一个连接添加别名之前,它导致SQL where子句,这将永远是真实的
SELECT *
FROM Buildings this_
inner join AttributeValues attributev1_
on this_.Id = attributev1_.BuildingId
WHERE
attributev1_.Value = 'Large'
and attributev1_.Value = 'Blue'
这不是一个复杂或不寻常的查询,所以如果没有解决方法,我会感到惊讶。
只是为了信息,我已经成功地创建使用HQL等效工作查询 但不希望有将我们的动态标准,如果可能的话 根据查询到HQL。 –
类似的问题在这里:[重复协会](http://stackoverflow.com/questions/3881286/i-am-getting-a-duplicate-association-path-error-in-the-nhibernate-criteria-whe)希望它帮助 - 无法在工作中测试它。 – matt
感谢您的建议 - 他们似乎得出了相同的结论,它不能用Criteria完成,但它似乎令人惊讶,因为它是这样一个简单的查询。 –