如果我有这样的映射:
<class name="Library" table="Libraries">
...
<dynamic-component name="Annotations">
<property name="LibraryResolver.AlgorithmVersion" column="`LibraryResolver.AlgorithmVersion`" type="Int32" />
</dynamic-component>
</class>
我应该如何为 LibraryResolver.AlgorithmVersion
大于给定值的所有库编写 HQL 或 Linq-to-NHibernate 查询?
最佳答案
下面的 HQL 查询可能符合您正在寻找的内容
from Library as lib
where lib.Annotations.LibraryResolver.AlgorithmVersion > 2
如果您正在使用 nhibernate,您是否尝试过 NHibernate LambdaExtensions ?该库提供了一组对 Criteria 和 DetachedCriteria api 的扩展方法,从而在使用上述两个 api 进行查询时不再需要魔术字符串。
下面是一个示例,说明如何将 NHibernate Detached Criteria 查询与提到的 LambdaExtensions 库结合使用
Answer answerAlias = null;
var actual = DetachedCriteria.For<Survey>()
.Add<Survey>( s => s.Status == SurveyStatus.Complete )
.Add<Questionnaire>( q => q.Id == questionnaireId )
.CreateAlias<Survey>( s => s.Answers, () => answerAlias )
.SetProjection( LambdaProjection.Property( () => answerAlias.Id ) );
关于nhibernate - HQL:查询动态组件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999164/