如何将createAlias用于具有Hibernate Criteria Api的null Set属性?

时间:2014-07-30 16:39:26

标签: java hibernate criteria-api hibernate-criteria

我有一个实体Car,它有一组可空的小插曲,我想得到没有小插图的Car列表。

我试过这个,但我找不到自己的方式......

Criteria criteria = getSession().createCriteria(Car.class);
criteria.createAlias("vignettes", "V");
criteria.add(Restrictions.or(Restrictions.lt("V.vignetteDateFin", dateDebut),Restrictions.eq("V.vignetteDateFin", null))) 
你可以提出任何想法吗?

2 个答案:

答案 0 :(得分:1)

Criteria criteria = getSession().createCriteria(Car.class);
criteria.createAlias("vignettes", "V");
criteria.add(Restrictions.or(
    Restrictions.lt("V.vignetteDateFin", dateDebut),
    Restrictions.isNull("V"))
);

如果这不符合您的要求,您可能需要子查询。请参阅此相关问题:Hibernate Criteria: adding additional restriction to Restrictions.isEmpty

答案 1 :(得分:0)

我解决了这个问题。

替换此行:

criteria.add(Restrictions.or(
Restrictions.lt("V.vignetteDateFin", dateDebut),
Restrictions.isEmpty("V"))

这一个:

criteria.add(Restrictions.or(
Restrictions.lt("V.vignetteDateFin", dateDebut),
Restrictions.isNull("V"))