如何在Spring Data JPA中实现多种保存方法?

qvsjd97n  于 2022-11-28  发布在  Spring
关注(0)|答案(2)|浏览(117)

我在springdatajpa中有一个很慢的默认保存方法。所以,我决定让保存方法异步工作,因为我不需要在这个特定的方法中响应。

@Repository
public interface WorkplaceRepo extends JpaRepository<Workplace, Long> {
    @Async
    public <S extends Workplace> S save(S workplaceE);

它导致了整个项目中所有的保存方法都开始调用这个异步方法的问题。问题是:如何使用两种保存方法而不丢失其中一种(默认版本和异步版本)
我想使用原生查询创建自定义插入方法,但实体有太多列和外键,我不确定它是否能正常工作。

qoefvg9y

qoefvg9y1#

您可以尝试使用下列程式码,让这两种方法都可用:

@Repository
public interface WorkplaceRepo extends JpaRepository<Workplace, Long> {
      @Async
      default <S extends Workplace> S saveAsync(S workplaceE) {
         return this.save(workplaceE);
      }
}

这样,从JpaRepository继承的not async方法save(S entity)仍然可以从WorkplaceRepo调用。

5ktev3wc

5ktev3wc2#

我建议创建一个新的存储库WorkplaceRepoAsync,使用一个保存方法,如下所示:

@Repository
public interface WorkplaceRepoAsync extends Repository<Workplace, Long> {
    @Async
    public <S extends Workplace> S save(S workplaceE);
}

更新

@Async逻辑方法创建WorkplaceService会更好
第一次

相关问题