我正在使用@RepositoryRestResource工具,但是每次用户执行读取操作GET,find等时,我都希望对瞬态字段进行计算(取决于外部服务)。

如果列表中只有一个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/

10-12 03:57