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

How to create restriction between two different aliases on Hibernate Criteria query?

我需要用两个别名做一个限制 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");

Client 有一个 clientOldPlans 列表(OneToMany 关系)和一个 clientPlan(OneToOne)。 ClientOldPlan 和 ClientPlan 是不同的 类,但是有共同的 category 属性,所以我想获取与 ClientOldPlans

具有相同类别的 ClientPlans

这个限制不起作用,因为 hibernate 试图将 clientPlan.category 与字符串 "clientOldPlanAlias.category".

匹配

执行此限制的正确方法是什么?

您尝试过使用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");