nhibernate - HQL:查询动态组件属性

标签 nhibernate hibernate hql

如果我有这样的映射:

<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/

相关文章:

c# - 字典 C# 中的 GetHashCode 和 Equals 实现

java - spring mvc tomcat错误

java - Hibernate/SQL 多重连接查询精确匹配关系

java - HQL IN 子句是否只接受有限数量的值(MySQL 数据库)?

grails - 获取HQL中的两个集合的交集

nhibernate - 用于查询的无状态 NHibernate

使用通用存储库的 NHibernate Linq Eager Loading

asp.net - NHibernate 的多数据库

java - 使用 JPA 2 和 Hibernate 的扩展持久性上下文类型

hibernate - 这些 @Table(uniqueConstraints) 和 @Table(indexes) 注释是否相同?