我希望能够根据数组中元素的数量动态地向 Hibernate Criteria 添加 OR 条件限制。
在下面的示例中,Project
是一个实体,是 User
实体的一个 @OneToMany
属性。 Project
实体有一个名为 name
的属性。 db.getSes()
提供了当前的 Session
。
我的目前方法是:
String[] project_name_filters = {"Project Name 1","Project Name 2"};
Criteria q = db.getSes().createCriteria(User.class);
if(project_name_filters.length > 0) {
q.createAlias("project", "project");
LogicalExpression or_exp = null;
for(int ix_prj = 0 ; ix_prj < project_name_filters.length ; ix_prj++) {
or_exp = Restrictions.or (or_exp,Restrictions.eq("project.name", project_name_filters[ix_prj]));
}
q.add(or_exp);
}
@SuppressWarnings("unchecked")
List<User> users = (List<User>) q.list();
但是or_exp = null
的初始化不太合适。
我甚至不确定这是否是在Hibernate查询中实现动态OR限制集合的方式。
我该怎么做呢?
1 != 1
的东西开始,并添加OR
语句。我不太了解Hibernate标准以给出等效的内容。 - fzzfzzfzz