如何使用QueryDSL动态构建和链接谓词。
我有一个带数据表的UI。每列都有一个框,您可以在其中输入一个过滤条件。像这样:
在上面的示例中,eventno filter =“0288”和address filter =“drive”。然后,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中的每个键/值都能动态构造谓词。
答案 0 :(得分:0)
上面的代码确实有效,但是:
episodeRepository.findAll(where);
返回一个可迭代的,我的大部分项目都使用List。所以我修改了Episode Repo,重写为:
@Override
List<Episode> findAll(Predicate predicate);
现在返回一个列表并且代码有效。这个答案的一个增强是如果&#34; if&#34;可以通过迭代分页过滤器hashmap来生成语句。