我使用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投影查询的几种方法,但是在处理动态字段时都没有“优雅”的解决方案。
答案 0 :(得分:0)
从请求查询字符串生成查询的一种优雅方式(imo)是在控制器中的方法签名中添加 @QuerydslPredicate ,如here所述。这为您提供了一个谓词,它将在存储库中使用,而无需任何额外的样板代码。 关于该查询的结果仅包含查询中指定的字段,这可能是客户端的工作,因此它仅显示已发送的相同字段。