2016-01-24 14 views
2

Я пытаюсь создать неблокирующий сервис отдыха с помощью Spring Boot и Spring data JPA.Почему Spring-Data-JPA Async не работает?

Как сделать Async сохранить объект с данными Spring JPA @Async. Ниже код не работает для меня, хотя другие функции, похоже, работают над одним и тем же объектом.

Я пытаюсь сделать это в репозитории JPA. Вот полный репозиторий: кроме сохранения. Эти методы работают отлично, и я мог проверить их

public interface LoanRepository extends JpaRepository<Loan,Long> { 

@Query("select distinct loan from Loan loan left join fetch loan.collaterals left join fetch loan.partys") 
@Async 
CompletableFuture<List<Loan>> findAllWithEagerRelationships(); 

@Query("select loan from Loan loan left join fetch loan.collaterals left join fetch loan.partys where loan.id =:id") 
@Async 
CompletableFuture<Loan> findOneWithEagerRelationships(@Param("id") Long id); 

@Async 
void delete(Long id); 

}

Однако, когда я пытаюсь добавить ниже метод сохранения:

@Async 
    <S extends CompletableFuture<Loan>> S save(Loan loan); 

я получаю очевидную ошибку компиляции, которая говорит "The method save(Loan) is ambiguous for the type LoanRepository"

Я попытался изменить его на:

@Async 
    <S extends CompletableFuture<Loan>> S save(S loan); 

Но я получаю исключение при запуске java.lang.UnsupportedOperationException: null которая обусловлена:

Caused by: java.lang.NullPointerException: null 
at org.springframework.data.repository.query.QueryMethod.potentiallyUnwrapReturnTypeFor(QueryMethod.java:244) 

Весна данных JPA Документация по поддержке асинхронным не ясно Сохранить часть. Spring Data JPA Async Support

+0

Любая помощь? Кто угодно? – SRK

ответ

0

Вы пытались просто вернуть CompletableFuture? Что-то вроде этого (непроверенные):

@Async 
<S extends Loan> CompletableFuture<S> save(S loan); 

Вы не можете простираться от JpaRepository хотя, потому что это будет конфликтовать с одной он унаследовал от CrudRepository. Расширьте с Repository вместо этого и скопируйте любой способ, который вам нужен, с CrudRepository, PagingAndSortingRepository, или JpaRepository