我有一个由discriminator映射的每个类层次结构的表。它效果很好,但我不知道如何处理容器类。
情景是宠物包含猫,狗和猫,狗在一张桌子里。我发现了一个如下所示的休眠解决方案,归功于chris Polymorphic one-to-many。我如何在NHibernate中做同样的事情?尤其是围绕@Where(clause =“dtype ='Dog'”)
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
class Pet { ... }
@Entity
public class Cat extends Pet {}
@Entity
public class Dog extends Pet {}
@Entity
public class Owner {
@Id @GeneratedValue
long id
@OneToMany
@JoinColumn(name="owner_id", insertable=false, updatable=false)
List<Pet> pets
@OneToMany
@JoinColumn(name="owner_id", insertable=false, updatable=false)
@Where(clause="dtype='Dog'")
List<Dog> dogs
@OneToMany
@JoinColumn(name="owner_id", insertable=false, updatable=false)
@Where(clause="dtype='Cat'")
List<Cat> cats
}
答案 0 :(得分:0)
根据要求过滤宠物系列。在C#中,这看起来像:
public List<Cat> Cats
{
get { return Pets.OfType<Cat>().ToList(); }
}
或者将Cats集合作为IEnumerable<Cat>
返回,并取消ToList()
。