【问题标题】:How do I retrieve Spring Data's PersistentEntity?如何检索 Spring Data 的 PersistentEntity?
【发布时间】:2020-01-18 18:02:34
【问题描述】:

JpaRepositorys save() 方法的一个方面,我试图检查要保存的实体是新的还是已经存在并且应该更新。

我注意到PersistentEntity 类中的Spring Data REST uses the isNew() method,但还没有发现我如何在只有要创建或更新的实体的模型类的同时获得PersistentEntity 对象。

如何从要存储或更新的实体中检索 Spring Data 的 PersistentEntity 对象?

【问题讨论】:

  • 对不起,你能再澄清一下吗?
  • 您是否需要使用方面而不是使用例如实体拦截器?
  • @YCF_L 不明白的地方可以详细说一下吗?
  • @Kayaman 我不确定,还没有听说过实体拦截器。我可以使用 Spring Data REST 中的RepositoryEventHandlers,但只有在更改通过 Spring Data REST 时才会触发。但我也想从其他地方捕获repository.save() 的电话。该相关实体的PersistentEntity 对象似乎是最简单的。
  • @Daniel 有很多不同的机制,所以我建议四处寻找最适合您要求的机制。

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


【解决方案1】:

最简单的方法是注入一个Repositories 实例并从中获取PersistentEntity

@Component
class SomeComponent {

  private final Repositories repositories;

  SomeComponent(Repositories repositories) {
    this.repositories = repositories;
  }

  void someMethod(Object someEntity) {

    PersistentEntity<?> entity = repositories.getPersistentEntity(someEntity.getClass());
    …
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多