首页 > 解决方案 > 从条件查询中的父对象获取子对象的字段。(休眠/持久性)

问题描述

我有一个对象 (A),它有一个包含另一个object(B) 的字段,而 B 有一个long类型的字段。我希望能够在条件查询中访问 B 的长类型字段。

在示例代码中,我们看到了如何获取对象的字段,但是有没有办法以与示例代码类似的方式获取 objectA.objectB.field?

我找到了这个示例代码:

CriteriaQuery<Integer> criteria = builder.createQuery( Integer.class );
Root<Person> personRoot = criteria.from( Person.class );
criteria.selec(1)t( builder.max( personRoot.get( Person_.age ) ) );
criteria.where( builder.equal( personRoot.get( Person_.eyeColor ), "brown" ) );
Integer maxAge = em.createQuery( criteria ).getSingleResult();

标签: javahibernatejpapersistence

解决方案


答案是我们可以在每个函数内部使用多个 get 函数。

例子:

criteria.where(builder.equal(ParentClass.get("ChildClass").get("FieldOfChildClass"), "value" ));

推荐阅读