Hibernate criteria 对多个条件的限制

Hibernate criteria restriction on multiple criterias

我正在编写条件查询。我的查询基于与表 属性 和用户相对应的多个条件。 returns 如果 prop 为 12 或 13,无论用户是谁,或者如果 prop 为 NULL,则用户必须是 loggedInUser。 Sql 查询有如下条件 which returns 4 rows

where (property.PROP in (12,13) or (property.PROP is null
                 and user.loggedInUser = 'XYZ'))

我的标准

Criteria userQuery = session.createCriteria(User.class);
Criteria propertyQuery = userQuery .createCriteria("property");

  Criterion crt = (Criterion) userQuery.add(Restrictions.eq("loggedInUser", userId));

propertyQuery.add(
            Restrictions.or( 
                 Restrictions.in("prop",propList),
                    Restrictions.and(Restrictions.isNull("prop"),crt)
                            )
                 );

我的问题是 Restrictions.and(criterion,criterion) 将两个标准作为参数。但是,userQuery 上的第二个条件 'crt' 在类型转换时无效 (Criterion)。 Hibernate 会报错。我怎样才能在标准中实现这个功能。或者如何写标准 Restrictions.and(Restrictions.isNull("prop") , userQuery.add(Restrictions.eq("loggedInUser", userId)))

使用休眠标准进行连接,如下例代码所示:

 List cats = session.createCriteria(Cat.class)
     .createAlias("kittens", "kit")
     .add( Restrictions.like("kit.name", "Iz%") )
     .list();

注意:上面的代码只是一个如何在hibernate criteria中使用Join的例子。