java - JPA CriteriaAPI: correct usage of isMember() -
i using jpas criteria api request objects form database , apply filter request.
the following code shows method assambles , executes query:
@override public list<myclass> findall(myclassfilterobject filter) { final criteriabuilder builder = this.getentitymanager().getcriteriabuilder(); final criteriaquery<myclass> criteriaquery = builder.createquery(myclass); root<myclass> root = criteriaquery.from(myclass); list<predicate> criterialist = new linkedlist<predicate>(); if (!filter.getmyclassstatus().equals("")) { path<string> statuspath = root.get("myclassstatus"); criterialist.add(builder.equal(statuspath, myclassstatus.valueof(filter.getmyclassstatus()))); } if (!filter.getmyclasstype().equals("")) { expression<set<myclasstype>> myclasstypesquery = root.get("myclasstype"); criterialist.add(builder.ismember(myclasstype.valueof(filter.getmyclasstype()), myclasstypesquery)); } if (criterialist.size()>0){ criteriaquery.where(builder.and(criterialist.toarray(new predicate[criterialist.size()]))); } typedquery<myclass> typedquery = this.getentitymanager().createquery(criteriaquery); typedquery.setfirstresult(filter.getpagenumber() * 10); typedquery.setmaxresults(10); list<myclass> myclasss = typedquery.getresultlist(); if (myclasss.isempty()) { return new linkedlist<myclass>(); } return myclasss; } this code returns same 2 objects, no matter choose "myclasstype". myclass has set of myclasstype (an enum value) objects attached , want know if myclasstype object filter member of collection
i not sure if using ismember method right
Comments
Post a Comment