簡體   English   中英

加載 spring 上下文時,未創建存儲庫 bean

[英]When loading a spring context, the repository bean is not created

我正在嘗試創建存儲庫但出現錯誤。

我的接口存儲庫:

public interface CallRepository extends JpaRepository<Call, Integer> {

    @Override
    @Transactional
    Call save(Call call);

    @Modifying
    @Transactional
    @Query("DELETE FROM Call c WHERE c.id=:id AND c.subscriber.id=:subscriberId")
    int delete(@Param("id") int id, @Param("subscriberId") int subscriberId);

    @Query("SELECT Call FROM Call c WHERE  c.subscriber.id=:subscriberId")
    List<Call> getAll(@Param("subscriberId") int subscriberId);

    List<Call> getAllBySubscriberIdAndDateTimeBetween(int subscriberId, LocalDateTime startDateTime, LocalDateTime endDateTime);

} 

我的存儲庫 class:

@Repository
public class CallRepositoryImpl {

    @Autowired
    private SubscriberRepository subscriberRepository;

    @Autowired
    private CallRepository repository;

    @Transactional
    public Call save(Call call, int subscriberId) {
        if (!call.isNew() && get(call.getId(), subscriberId) == null) {
            return null;
        }
        call.setSubscriber(subscriberRepository.getOne(subscriberId));
        return repository.save(call);
    }

    public Call get(int id, int subscriberId) {
        return repository.findById(id)
                .filter(t -> t.getSubscriber().getId() == subscriberId)
                .orElse(null);
    }

    public boolean delete(int id, int subscriberId) {
        return repository.delete(id, subscriberId) != 0;
    }

    public List<Call> getAll(int subscriberId) {
        return repository.getAll(subscriberId);
    }

    public List<Call> getBetweenDateTime(int subscriberId, LocalDateTime startDateTime, LocalDateTime endDateTime) {
        Objects.requireNonNull(startDateTime, "startDateTime must not be null");
        Objects.requireNonNull(endDateTime, "endDateTime must not be null");
        return repository.getAllBySubscriberIdAndDateTimeBetween(subscriberId, startDateTime, endDateTime);
    }

}

加載 spring 上下文時,出現錯誤:

創建名稱為“callRepositoryImpl”的 bean 時出錯:通過字段“repository”表示的依賴關系不滿足; 嵌套異常是 org.springframework.beans.factory.BeanCreationException:創建名為“callRepository”的 bean 時出錯:調用 init 方法失敗; 嵌套異常是 java.lang.IllegalArgumentException:驗證方法公共抽象 java.util.List ru.subscribers.repository.events.CallRepository.getAll(int) 查詢失敗!

在類型為 Integer 的數據庫“id”中,也在類型為 Integer 的實體“id”中。

告訴我可能是什么問題?

我不確定,但不應該這樣查詢嗎?

@Query("SELECT c FROM Call c WHERE  c.subscriber.id=:subscriberId")

你能告訴我你的上下文文件嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM