我需要使用两个别名来制作限制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”匹配。
这种限制的正确方法是什么?
答案 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");