Запрос критериев гибернации по ассоциации

Как мне выполнить следующий запрос Hibernate с использованием API критериев. У меня есть родительский объект со списком детей. Я хотел бы просмотреть всех родителей и найти, какие родители содержат указанного ребенка. т.е. List<Parent> findParents(Child child);

Спасибо.


person DD.    schedule 12.03.2010    source источник


Ответы (2)


Мне кажется, это работает. Продукт - это родитель, а ингредиент - это ребенок. Мы надеемся, что он найдет все продукты, содержащие данный ингредиент. Однако я не смог полностью это проверить.

public IList<Product> GetProductsWithIngredient(Ingredient ingredient)
{
    using (ITransaction transaction = session.BeginTransaction())
    {
        ICriteria criteria = session.CreateCriteria<Product>();
        criteria.CreateCriteria("Ingredients")
        .Add(Restrictions.Eq("GUID", ingredient.GUID));

        return criteria.List<Product>();
    }
}

Надеюсь это поможет :)

ПРИМЕЧАНИЕ. GUID - это мой уникальный идентификатор.

РЕДАКТИРОВАТЬ: Я только что протестировал это с более чем одним продуктом, и, похоже, он возвращает правильный продукт. Благодаря zoidbeck.

person Tony Day    schedule 12.03.2010

В Java это так:

Criteria criteria = session.createCriteria(Parent.class,"parent")
    .createAlias("child","child")
    .add(Restriction.eq("child.name",child.getName());

   List<Parent> parents = criteria.list();

должен дать вам ответ.

person nzilsk    schedule 30.06.2011