动态QueryDSL投影

时间:2018-11-19 16:19:49

标签: querydsl

我使用QueryDSL已有一段时间了,最​​近我想知道是否可以使用该框架进行动态投影,例如:

假设我有一个实体,如下所示:

public Class User {
    private Long id;
    private String username;
    private String password;
    private int age;
    private String address;
    ...Getters and Setters
}

和指定字段的端点:

http://localhost/users/1?fields=id,username,address

当有人在该地址上开枪时,预期结果将是具有id, username, and address属性的对象。

我知道使用QueryDSL投影查询的几种方法,但是在处理动态字段时都没有“优雅”的解决方案。

1 个答案:

答案 0 :(得分:0)

从请求查询字符串生成查询的一种优雅方式(imo)是在控制器中的方法签名中添加 @QuerydslPredicate ,如here所述。这为您提供了一个谓词,它将在存储库中使用,而无需任何额外的样板代码。 关于该查询的结果仅包含查询中指定的字段,这可能是客户端的工作,因此它仅显示已发送的相同字段。