Hibernate - 根据成员对象的字段加载对象

时间:2008-09-29 21:56:20

标签: hibernate criteria

如何根据成员对象的字段值通过Hibernate加载对象?例如,假设存在以下类,bar和foo之间具有一对一的关系:

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

如果您只有Foo的ID,那么如何使用Hibernate Criteria来加载Bar?

第一件事就是加载Foo对象并将其设置为Criterion以加载Bar对象,但这似乎很浪费。是否有一种有效的方法可以使用Criteria执行此操作,还是以这种方式处理HQL?

2 个答案:

答案 0 :(得分:3)

您绝对可以以有效的方式使用Criteria来实现这一目标:

session.createCriteria(Bar.class).
        createAlias("aMember", "a").
        add(Restrictions.eq("a.id", fooId));

应该这样做。

答案 1 :(得分:0)

您可以使用Criteria或HQL。

HQL示例:

查询query = session.createQuery(“从Bar开始,bar为bar.aMember.id =:fooId”);

query.setParameter(“fooId”,fooId);

列出结果= query.list();