QueryDSL动态谓词链接

时间:2017-11-22 21:53:45

标签: java spring querydsl

  

如何使用QueryDSL动态构建和链接谓词。

我有一个带数据表的UI。每列都有一个框,您可以在其中输入一个过滤条件。像这样:

在上面的示例中,eventno filter =“0288”和address filter =“drive”。然后,UI将这些内容发送到分页对象中的后端,后者包含列名和过滤字符串的映射。像这样:

UI

在我使用QueryDSL的后端,我现在需要根据为列提供的术语动态构建谓词。我已经尝试过这个地址事件和地址列,但它似乎并没有过滤两者。

   // Author @patriciogv - 2015
   // http://patriciogonzalezvivo.com

   #ifdef GL_ES
   precision mediump float;
   #endif

   #define PI 3.14159265359
   #define TWO_PI 6.28318530718


   uniform vec2 u_resolution;
   uniform vec2 u_mouse;
   uniform float u_time;



   void main(){
       vec2 c = gl_FragCoord.xy/u_resolution.xy;
       c.x *= u_resolution.x/u_resolution.y;
       c.y =  c.y;
       c = vec2(0.5, 0.5) - c;

       float d = smoothstep(0.0, 1.572, 0.336 - length(c.xy));
       float glowsize = 30.712;
       gl_FragColor = vec4(0., .0, d, 1.) * glowsize ;

   }

我可能希望hashmap中的每个键/值都能动态构造谓词。

1 个答案:

答案 0 :(得分:0)

上面的代码确实有效,但是:

episodeRepository.findAll(where);

返回一个可迭代的,我的大部分项目都使用List。所以我修改了Episode Repo,重写为:

    @Override
    List<Episode> findAll(Predicate predicate);

现在返回一个列表并且代码有效。这个答案的一个增强是如果&#34; if&#34;可以通过迭代分页过滤器hashmap来生成语句。