【问题标题】:NHibernate. Distinct parent child fetching休眠。不同的父子获取
【发布时间】:2010-06-01 03:38:06
【问题描述】:

我有常见的 NH 映射;

  <class name="Order, SummaryOrder.Core" table='order'>
      <id name="Id" unsaved-value="0" type="int">
         <column name="id" not-null="true"/>
         <generator class="native"/>
     </id>
    <many-to-one name="Client" class="SummaryOrderClient, SummaryOrder.Core"      column="summary_order_client_id"
            cascade="none"/>
    <many-to-one name="Provider" class="SummaryOrderClient, SummaryOrder.Core" column="summary_order_provider_id"
           cascade="none"/>
    <set name="Items" cascade="all">
        <key column="order_id"/>
        <one-to-many class="OrderItem, Clients.Core" />
    </set>  
 </class>

希望按此条件获取列表

ICriteria criteria = NHibernateStateLessSession.CreateCriteria(typeof(SummaryOrder.Core.Domains.Order)); ;
        criteria.Add(Restrictions.Or
                (Restrictions.Eq(String.Format("{0}.Id", SummaryOrder.Core.Domains.Order.Properties.Client), idClient),
                  Restrictions.Eq(String.Format("{0}.Id", SummaryOrder.Core.Domains.Order.Properties.Provider), idClient))).
                  SetResultTransformer(new DistinctRootEntityResultTransformer()).
                  SetFetchMode(SummaryOrder.Core.Domains.Order.Properties.Items, FetchMode.Join);
        return criteria.List<SummaryOrder.Core.Domains.Order>() as List<SummaryOrder.Core.Domains.Order>

但是我有重复。当我执行一个限制(没有 OR)时,我得到了不同的订单集合,但是 Restriction OR 会阻止我的查询。我想获得不同的(在客户那里)订单集合。怎么了。请帮忙!

这个 hql 正在工作。为什么我不能通过条件 API 得到这个结果?

       select distinct o from Order o left join fetch o.Items where o.Client.Id=1 or o.Provider.Id=1

【问题讨论】:

  • 上例中你的“idClient”是什么?并且在 Restrictions.Or 您正在使用 idClient 作为 Client 和 Provider 属性,这不是错误吗?
  • idClient 是客户端的 id(int)。不,这不是错误。我需要这个逻辑。

标签: nhibernate criteria


【解决方案1】:

检查您的 Provider 映射:

<many-to-one name="Provider" class="SummaryOrderClient, SummaryOrder.Core"     column="summary_order_provider_id"
           cascade="none"/>

类名错误!?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多