0

データベースに怠惰な種類の検索を実装する必要があるプロジェクトがあります。

私がやりたいのは、org.hibernate.criterion.Exampleを使用することですが、各プロパティに「または」条件を使用します。

たとえば、次のようなクラスがあるとします。

public class Cat{
   private String name;
   private String breed;
   private Date birthDay;
/*getter and setter omitted*/
}

そして、3つのフィールドすべてに値を設定しました

Cat cat2Find = new Cat();
cat2Find.setName("Nabi");
cat2Find.setBreed("That hairless Egyptian cat");
cat2Find.setBirthDay( someDate );    //5th May 2005 for example

名前が「ナビ」、品種が「無毛のエジプト猫」、誕生日が2005年5月5日の猫を探したい

org.hibernate.criterion.Exampleを使用してみましたが、show_sqlは、各フィールドのAnd条件を使用していることを示しました。また、LogicalExpressionでorg.hibernate.criterion.Disjunctionを使用してみましたが、すべてのフィールドを反復処理するのは非常に面倒でした。

基準のように機能するクラスがあるかどうか疑問に思います。例ですが、各フィールドに条件があり、「And」または「OR」のいずれかを選択できます。

お時間をいただきありがとうございます:)

4

1 に答える 1

0
    // Use disjunction() or conjunction() if you need more than 2 expressions
Disjunction aOrBOrC = Restrictions.disjunction(); // A or B or C
aOrBOrC.add(Restrictions.eq("b", "a"));
aOrBOrC.add(Restrictions.eq("b", "b"));
aOrBOrC.add(Restrictions.eq("b", "c"));

// Use Restrictions.and() / or() if you only have 2 expressions
crit.add(Restrictions.and(Restrictions.eq("a", "abc"), aOrBOrC));

このようにして、「AND」/「OR」を使用して簡単なクエリを作成できます。

于 2012-12-12T11:36:56.797 に答える