我正在使用@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/