1

私は次のような基準クエリを持っています:

        Criteria criteria = session.createCriteria(Parts.class);
        Iterator<String> iterator = searchList.iterator();
        Disjunction or =  Restrictions.disjunction();
        while (iterator.hasNext()){
            or.add(Restrictions.like("partName", "%"+iterator.next()+"%"));
        }
        criteria.add(or);
        criteria.add(Restrictions.in("partType", partType));
        criteria.addOrder(Order.asc("partDesc"));

これにより、次のwhere句が生成されます。

from PartsDb..Parts this_ where (this_.PartName like ? or this_.PartName like ? or this_.PartName like ?) and this_.PartType in (?, ?) order by this_.PartDesc asc

'OR'句全体が中括弧で囲まれているため、正しい結果が得られません。クエリを次のようにします(OR句を中括弧なしで):

from PartsDb..Parts this_ where this_.PartName like ? or this_.PartName like ? and this_.PartType in (?, ?) order by this_.PartDesc asc

だから私はこれを書こうとしています:

Select * from dbo.Parts 
where 
PartName like '%ABC%'
or PartName like '%XYZ%'
or PartName like '%PQR%'
....
...

and PartType in ('a','b')
...

'searchList'内のオブジェクトの数は、ユーザーが入力した内容によって異なります。中括弧から可変数の「OR」句を取得する方法についてのヘルプは大歓迎です!!

ありがとう

4

0 に答える 0