0

我有一个有一对多孩子的班级家长。孩子是嵌套的,可以有 n 个作为深度。我想写一个 hql,它将返回一个有孩子、孙子、曾孙等符合条件的父母。我能够得到符合条件的孩子,但是当我调用 children.getChildren 时,它会返回不符合条件的大孩子。这可能吗?

谢谢, 帕瓦西

4

2 回答 2

0

是的,您可以,但是您也对它们添加了限制。

     criteria = session.createCriteria(YourClass.class);
                criteria.add(Restrictions.eq
                ("yourClassproperty", value));// //condition on parent
                criteria.createAlias("children", "child");
                criteria.createAlias("child.grandeChild", "grandChild");
                criteria.add(Restrictions.or(Restrictions.eq
                ("child.prop", value), Restrictions.
                eq("grandChild.property", value)));
                //Exmple restrictions on children
                criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
                return criteria.list();
于 2013-02-23T06:53:27.727 回答
0

有两种方法可以实现这一点:

  1. lazy = false当您获取父类的对象时,通过在映射文件或实体级别指定来延迟加载其子对象。就你的条件而言,你可以用你的编程语言编写逻辑(例如循环子对象)。

  2. 编写一个递归逻辑,使数据库命中直到获取最后一个第 n 个孙子。它不能用单一标准或 HQL 来完成。

于 2013-02-23T08:42:14.710 回答