如何在Hibernate Criteria查询中创建两个不同别名之间的限制?

时间:2017-11-24 15:27:23

标签: java hibernate criteria

我需要使用两个别名来制作限制eq,如下所示:

final Criteria query = sessionFactory.getCurrentSession().createCriteria(Client.class);
query.createAlias("clientPlan", "clientPlanAlias");
query.createAlias("clientOldPlan", "clientOldPlanAlias");
...

query.add(Restrictions.eq("clientPlanAlias.category", "clientOldPlanAlias.category");

客户端有一个clientOldPlans(OneToMany关系)列表和一个clientPlan(OneToOne)列表。 ClientOldPlan和ClientPlan是不同的类,但共同具有category属性,因此我想获得与ClientOldPlans具有相同类别的ClientPlans

此限制不起作用,因为hibernate尝试将clientPlan.category与字符串“clientOldPlanAlias.category”匹配。

这种限制的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用Restrictions.eqProperty方法?我相信这就是你要找的东西。

final Criteria query = sessionFactory.getCurrentSession().createCriteria(Client.class);
query.createAlias("clientPlan", "clientPlanAlias");
query.createAlias("clientOldPlan", "clientOldPlanAlias");
...

query.add(Restrictions.eqProperty("clientPlanAlias.category", "clientOldPlanAlias.category");