java - 如何在 Spring Data Rest 上的 GET/find 中对实体进行计算?

标签 java spring spring-boot spring-data-jpa spring-data-rest

我正在使用@RepositoryRestResource设施,但我想在每次用户执行读取操作 GET、查找等时对 transient 字段进行计算(取决于外部服务)。

如果列表中只有 AfterGet/AfterFind 事件,我可以通过扩展 AbstractRepositoryEventListener 来处理修改

有什么干净的建议吗?

最佳答案

我通过@Alan Hay的建议找到了方法。

@Entity
@EntityListeners(TransientFieldResolver.class)
public class Entity {

    private Long id;
    private String transientField;
}

@Component
public static class TransientFieldResolver {

    private static ExternalService externalService;

    @Autowired
    public void setExternalService(ExternalService externalService) {
        TransientFieldResolver.externalService = externalService;
    }

    @PostLoad
    public void onPostLoad(final Entity entity) {
        if (Objects.isNull(entity.getTransientField())) {
            TransientFieldResolver.externalService.fillTransientField(entity);
        }
    }
}

关于java - 如何在 Spring Data Rest 上的 GET/find 中对实体进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062888/

相关文章:

java - stripes 是一个占用空间很小的框架,可以在企业环境中制作小型 Web 应用程序吗?

java - 如何创建对象列表的摘要?

java - 以编程方式在 JpaProperties 中添加 hibernate 拦截器 - Spring

java - Vaadin 项目无法启动

java - 应用程序 (src/main) 正在运行时,类路径上的 src/test/resources 中的文件是否存在?

mysql - 当 flyway 进程崩溃时,Flyway 不处理隐式提交的语句

java - 动态碧 Jade : accessing values for dynamic columns in a concatenated report

java - 除非 javaFX 中两个事件为真,否则如何将按钮设置为保持禁用状态?

mysql - inverseJoinColumns 注释在数据库中自动创建 UK

java - 异常 : java. lang.IllegalArgumentException:切入点格式不正确:期望 ')'