spring - 如何在 Spring Data REST 投影中有条件地公开数据?

标签 spring spring-data spring-data-rest

有一个投影 UserProjection 并且 User 表有一个字段 - enable_email,一个 bool 值。

@Projection(name = "summary", types = User.class)
public interface UserSummaryProjection {

    String getEmail();
}

访问 URL /app/users/{id}?projection=summary 按预期显示电子邮件

  1. 如何将摘要投影配置为仅在 enable_emailtrue 时才返回电子邮件?

  2. 该配置仅影响此投影还是适用于 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/

相关文章:

java - 当我在springboot API上使用@OneToMany和@ManyToOne时出现错误消息

java - Spring data Elasticsearch 中的 DataTableRepository

java - Spring数据-@Modifying(clearAutomatically = true,flushAutomatically = true)导致另一个实体无法更新

image - 如何使用 Spring Data REST 将图像文件提供给前端?

spring-data - 将 Hystrix 与 Spring 数据存储库一起使用

java - 如何在 Spring Data Rest 中为实体自定义模式

java - Spring - Controller 的单独目录

java - Spring 3.0 : "The prefix" X "for attribute" Y "associated with an element type" Z "is not bound"

java - Spring 表格未在提交表格时重新填写

java - Spring 数据 JPA : How to write subquery having IN operator