代码之家  ›  专栏  ›  技术社区  ›  AwkwardCoder

用于选择具有空子集合的所有实体的Hfibernate标准

  •  3
  • AwkwardCoder  · 技术社区  · 15 年前

    我很难编写一个标准来选择所有具有空子集合或空孙子集合的实体。我可以把这些作为单独的标准来做,但是我很难组合成一个单一的标准。

    类结构:

    public class Component
        {
            public IList<Version> Versions { get; set; }
        }
    
        public class Version
        {
            public IList<SubscribeEvent> SubscribedEvents { get; set; }
            public IList<PublishEvent> PublishedEvent { get; set; }
        }
    

    这不起作用:

    return session
                    .CreateCriteria<Component>("c")
                    .CreateCriteria("Versions", "v")
                    .Add(Restrictions.Or(Restrictions.IsEmpty("c.Versions"), Restrictions.And(Restrictions.IsEmpty("v.PublishedEvents"),
                                                                                            Restrictions.IsEmpty("v.SubscribedEvents"))))
                    .SetCacheable(true);
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   AwkwardCoder    15 年前

    我已经设法想出了一个解决方案,不确定它是否是最好的(我应该购买NH分析器)

    return session
                .CreateCriteria<Component>("c")
                .CreateAlias("Versions", "v", JoinType.LeftOuterJoin)
                .Add(Restrictions.Or(Restrictions.IsEmpty("c.Versions"),
                                     Restrictions.And(Restrictions.IsEmpty("v.SubscribedEvents"),
                                                      Restrictions.IsEmpty("v.PublishedEvents"))))
                .SetCacheable(true);