2

25個のオプションパラメータを使用した動的検索があります。HQlはオプションではありません。CriterionAPIを使用しています。次のようにサービスからDAOメソッドを呼び出すときに、サービスレイヤーに構築できる「制限」リストを受け入れたいDAOメソッドがあります。

Lits<myPojoClass> = myDAO.getDataByCriterion( <?Restriction List?> )

myDAO.getDataByCriterionは、次のように「制限リスト」を使用する可能性があります。

inside the myDAO class

Public List<myPojoClass> getDataByCriterion( <?Restriction List?> restrictionList) {
    Session s = HibernateUtil.currentSession();
    Criteria c = s.createCriteria(myPojo.class)
                  .add(Restrictions ( <?Restriction List?>  );  //attach the list here
    List<myPojoClass> response = c.list();

それはあなたができるはずの何かのようです。DAOメソッドに渡された制限を追加することは可能ですか?

4

1 に答える 1

3

はい、可能です。制限リストは、Criterionオブジェクトの通常のリスト(つまり、List <Criterion>)である必要があります。明確にするために、サンプルコードのようにそれらをすべて追加すると、接続詞(一連の論理AND)を実行することになります。

あなたのコードに私の提案を追加すると、これが得られます:

Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList) {
Session s = HibernateUtil.currentSession();
Criteria c = s.createCriteria(myPojo.class);
for (Criterion crit : restrictionList){
    c.add(crit);
}

List<myPojoClass> response = c.list();
于 2012-07-17T15:38:50.987 に答える