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

时间:2020-03-06 14:53:57  来源:igfitidea点击:

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

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

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

跳入我脑海的第一件事是加载Foo对象,并将其设置为Criterion来加载Bar对象,但这似乎很浪费。是否有使用Criteria进行此操作的有效方法,还是应该使用HQL进行处理?

解决方案

我们可以绝对有效地使用Criteria来完成此任务:

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

应该做到这一点。

我们可以使用条件或者HQL。

HQL示例:

查询query = session.createQuery("从Bar as bar开始,其中bar.aMember.id =:fooId");

query.setParameter(" fooId",fooId);

列出结果= query.list();