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