(独立)HQL的'索引'函数的等价标准

时间:2009-09-24 10:24:09

标签: nhibernate hql criteria detachedcriteria

我在一个对象上有一个IDictionary,我正在使用以下映射加载:

public class InternalFund : IInternalFund
{
    public virtual IDictionary<DateTime, IValuation> Valuations { get; set; }
}

<class name="InternalFund">
      <map name="Valuations">
        <key>
          <column name="FundID" />
        </key>
        <index type="DateTime" column="ValuationDate" />
        <one-to-many class="Echo.EchoDomain.Portfolio.Valuation" />
      </map>
</class>

这很好用,Valuation对象上没有ValuationDate但是Nhibernate正在根据需要将ValuationDate加载到字典的键中。我想查询InternalFund只检索一个指定ValuationDate的Valuation。我已经设法使用HQL中的index()函数执行此操作:

"from InternalFund i left join fetch i.Valuations v where index(v)='2009-09-30'"

同样,这太棒了,正是我想要产生以下where子句:

((valuations1_.ValuationDate='2009-09-30' )) 

但我真的很想在DetachedCriteria中这样做,以保持我的项目的健全性。当我尝试

.Add(Restrictions.Eq("index(Valuations)", valuationDate));

或者

.CreateAlias("Valuations", "v", JoinType.LeftOuterJoin)
.Add(Restrictions.Eq("index(v)", valuationDate));

它说:

QueryException: could not resolve property: index(v) of: Echo.EchoDomain.Fund.InternalFund

有没有办法用DetachedCriteria运行index()?

由于

斯图

1 个答案:

答案 0 :(得分:1)

我相信这是不可能的(但是?)

请参阅NHibernate JIRA上的this功能请求/改进请求。