ここに私が書いた方法があります
public static <T> List selectOnCriteria(SessionFactory sessionFactory, int maxResults, T model)
{
List resultList=null;
session=sessionFactory.openSession();
Criteria criteria= session.createCriteria(model.getClass());
criteria.add(Example.create(model).ignoreCase());// only for exact search, uppercase and lowercase are both included in ignorecase
if(maxResults>0)
criteria.setMaxResults(maxResults);
resultList=criteria.list();
return resultList;
}
これが私のモデルの1つです
public class UserModel
{
@Id
private String username;
private String password;
private String company;
//getters and setters are also defined
}
ここで、このようなテーブルにエントリがあるとします
Username: Chris
Password: Nolan
Company : Syncopy
モデルにこれらすべての値を設定すると、取得した resultList には 1 つのレコードが含まれます。ただし、モデルにユーザー名 (この場合は Chris) のみを入力すると、受け取る結果リストは常に空の ArrayList になります。
私のプロジェクト JPA 仕様は 2.0 ですが、それが問題である場合、最初のケースではオブジェクトが返され、2 番目のケースでは返されないのはなぜですか。
第二に、それが問題である場合:任意のモデル(任意のタイプ、任意の数のフィールドが入力された)を取ることができるジェネリッククラスを設計できる他の方法はありますか?
最後に、すべてのモデルの検索メソッドを作成します。
ありがとう、そして素晴らしい一日を!