spring - QueryDSL dynamic predicates -


i need querydsl querying. i'm using library spring data jpa. service class:

@service("tblactivityservice") public class tblactivityservice implements abstractservice<tblactivity> {  @resource private tblactivityrepository tblactivityrepository;  @override public list<tblactivity> findall(predicate predicate) {     return (list<tblactivity>) tblactivityrepository.findall(predicate); } } 

i have dynamic list of filters:

@entity @table(name = "sys_filters") public class sysfilter implements serializable { private static final long serialversionuid = 1l;  @id @generatedvalue(strategy = generationtype.identity) @basic(optional = false) @column(name = "filter_id") private integer filterid;  @joincolumn(name = "user_id", referencedcolumnname = "user_id") @manytoone(fetch = fetchtype.eager) private sysuser userid;  @size(max = 45) @column(name = "table_name") private string tablename;  @size(max = 45) @column(name = "column_name") private string columnname;  @size(max = 45) @column(name = "condition") private string condition;  @size(max = 100) @column(name = "value") private string value;   // getters & setters  } 

i have column name (e.g. title) have condition (e.g. ==, !=, >= etc.) - can store symbols or words (equals etc.) , have value.

the question "how dynamically generate predicate service?" table has 25 fields.

predicate looks that:

public booleanexpression buildfilteredresult(list<sysfilter> filters) {     //todo it!     return qtblactivity.tblactivity.title.eq("value");  // need dynamically each filter in list } 

the problem how invoke columnname string value. have suggestions?

it might easier use mapping filter conditions operators

map<string, operator> operators = immutablemap.of(   "==", ops.eq, "!=", ops.ne, ">", ops.gt, "<", ops.lt,   ">=", ops.goe, "<=", ops.loe);  expressions.predicate(operators.get(condition),    stringpath, expressions.constant(filtervalue)); 

also make sure combine predicates properly

predicates.and(...) 

returns new predicate , leaves predicates untouched.

maybe booleanbuilder after?


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -