Запрос Критерии гибернации на ассоциацию - PullRequest
3 голосов
/ 12 марта 2010

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 марта 2010

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

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 .

0 голосов
/ 01 июля 2011

В Java это так:

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

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

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

...