で注釈が付けられたフィールドを持つ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]));
}
この「swith」を削除したいと思います。たとえば「名前」によって、すでに追加された基準を取得することは可能ですが、新しい副基準を追加することはできません。