NHibernate один-ко-многим с дискриминатором - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть таблица для каждой иерархии классов, сопоставленная дискриминатором.Это прекрасно работает, но я не уверен, как обращаться с контейнерным классом.

Сценарий: домашнее животное содержит кошку, собаку и кошку, собаку в одном столе.Я нашел решение гибернации, как показано ниже, кредит Крису Полиморфный один-ко-многим .Как я могу сделать то же самое в 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
}

1 Ответ

0 голосов
/ 15 ноября 2011

Просто отфильтруйте коллекцию домашних животных при запросе.В C # это будет выглядеть так:

public List<Cat> Cats
{
    get { return Pets.OfType<Cat>().ToList(); }
}

Или вернуть коллекцию Cats как IEnumerable<Cat> и пропустить ToList().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...