Как использовать мою собственную декларацию сохранения вместо той, что была в Spring Data? - PullRequest
0 голосов
/ 13 мая 2019

У меня обновление при весенней загрузке с 1.5 до 2.1, и один из методов CRUDRepository save () изменен на saveAll, который в качестве возвращаемого типа изменяется. Может кто-нибудь дать мне знать, как вернуть saveAll вместо save.

Я попытался создать оболочку, которая расширяет save () для saveAll ().

1 Ответ

1 голос
/ 13 мая 2019

как то так

@NoRepositoryBean
public interface BaseJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {

    <S extends T> List<S> save(Iterable<S> entities);
}

@NoRepositoryBean
public class BaseJpaRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements BaseJpaRepository<T, ID> {

    private final EntityManager em;

    public BaseJpaRepositoryImpl(JpaEntityInformation<T, ID> entityInformation, EntityManager em) {
        super(entityInformation, em);
        this.em = em;
    }

    @Override
    public <S extends T> List<S> save(Iterable<S> entities) {
        return saveAll(entities);
    }
}

Затем получить класс (-ы) Репозитория из нового интерфейса BaseJpaRepository

@Repository
public interface MyEntityRepository extends BaseJpaRepository<MyEntity, Long> {

}

И, наконец, в классе конфигурации

@EnableJpaRepositories(
        basePackages = { ... },
        repositoryBaseClass = BaseJpaRepositoryImpl.class
)
public class RepoConfiguration {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...