【发布时间】:2026-01-14 16:05:02
【问题描述】:
我有一个 Java 类,它有一些用@SearchCriteria(criteria = "class1.class2.field") 注释的字段。 criteria参数里面注解意味着对于class这个字段应该设置为休眠条件,这意味着,如果字段标记例如:
@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]));
}
我想删除这个“开关”。有可能获得已经添加的标准,我现在没有,例如通过“名称”并为其添加新的子标准。
【问题讨论】:
标签: hibernate spring detachedcriteria