我有一个 Java 类,其中有一些用@SearchCriteria(criteria = "class1.class2.field")
. criteria
注释内的参数意味着对于类,该字段应设置为休眠条件,这意味着,如果字段标记例如:
@SearchCriteria(criteria = "class1.class2.field")
private String value;
我想动态创建休眠条件,看起来像
DetachedCriteria hibernateCriteria = forClass(Class.class);
hibernateCriteria.createCriteria("class1").createCriteria("class2").add(eq("field", value));
问题是我不能设置另一个已经添加的标准,这意味着我应该检查注释criteria
选项。
switch (annotationCriteria.length - 1) {
case 0:
hibernateCriteria.add(isNull(annotationCriteria[0]));
case 1:
hibernateCriteria.createCriteria(annotationCriteria[0]).add( Restrictions.isNull(annotationCriteria[annotationCriteria.length - 1]));
case 2: hibernateCriteria.createCriteria(annotationCriteria[0]).createCriteria(annotationCriteria[1]).add( Restrictions.isNull(annotationCriteria[annotationCriteria.length - 1]));
}
我想删除这个“开关”。可以通过(我现在不知道)获得已经添加的条件,例如通过“名称”并为其添加新的子条件。