有一个投影 UserProjection
并且 User
表有一个字段 - enable_email
,一个 bool 值。
@Projection(name = "summary", types = User.class)
public interface UserSummaryProjection {
String getEmail();
}
访问 URL /app/users/{id}?projection=summary
按预期显示电子邮件
如何将摘要投影配置为仅在
enable_email
为true
时才返回电子邮件?该配置仅影响此投影还是适用于
User
实体的所有投影?
最佳答案
我成功了并将发布答案 -
在投影中,只需使用 Spring bean 和方法名称使用 @Value 进行注释,如下所示 -
@Value("#{@userUtil.manageEmail(target)}")
String getEmail();
然后,我创建了一个带有 Component 注释的 Spring Bean,并添加了如下方法
public String manageEmail(User user) {
Profile profile = profileRepo.findByUser(user);
String[] paramsEnabled = profile.getSettings().split(",");
boolean emailAllowed = Arrays.stream(paramsEnabled).anyMatch((s) -> (s.equals(Constants.EMAIL_ENABLED)));
return emailAllowed ? user.getEmail() : null;
}
关于spring - 如何在 Spring Data REST 投影中有条件地公开数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28137297/