web-dev-qa-db-ja.com

Spring Boot JPA CrudRepository

Spring Boot + Spring Data JPAを使用していて、CrudRepositoryを拡張するクラスを挿入しようとすると、この問題に直面します。

原因:org.springframework.beans.factory.BeanCreationException:「topicRepository」という名前のBeanの作成中にエラーが発生しました:一致するコンストラクターを解決できませんでした(ヒント:型のあいまいさを避けるために、単純なパラメーターのインデックス/型/名前の引数を指定してください)

リポジトリクラス:

public interface TopicRepository extends CrudRepository<Topic, Integer> {}

サービスクラス:

@Service
public class TopicService {

      @Autowired
      private TopicRepository topicRepository;
}

助言がありますか?

8
A.Chakroun

同じ問題が発生していましたが、SpringBootのバージョンを切り替えることで修正しました。 Spring Data JPAバージョンを変更しても何も起こらなかったので(これはバグがあると私が想定した場所です)、SpringBootバージョン1.5.1にバグがあると思います。バージョン1.4.3に戻したところ、エラーはなくなりました。私は後続の/異なるバージョンを試していなかったので、依存関係とそのバージョンを試してみる必要があるかもしれません。

ちなみに、サービスクラスに@Repositoryアノテーションを付けることができますが、違いはありません。私はこれらのアプリをservice/daoパターンを使用して同じように設定してきましたが、アノテーションを使用するのが面倒だったことは一度もありません。うまくいけば、これは、SpringBoot開発フローが突然エラーをスローする他の人を助けるかもしれません!

9
Trevor Bye

どのバージョンのspring-data-commonsとspring-data-jpaを使用していますか。 spring-data-commons1.13.xとspring-data-jpa1.10.xを使用してこれに遭遇しました。 spring-data-jpaを1.11.xにアップグレードすると、問題が修正されました。

5
Andy Sampson

1.5.2でも同じ問題が発生しました。 1.5.5にアップグレードすると、問題が解決しました。

0
dzirtbry

Spring Bootを1.5.4にアップデートした後、私も同じ問題を抱えていました。

バージョン1.0.4のspring-data-enversも使用しています。 1.4.1にアップグレードすると、問題が解決しました。

私はそれが誰かを助けることを願っています:)

0
r4phG

Applicationcontextを使用して、この参照topicRepositoryにリポジトリを挿入できます。アノテーションを使用して、topicRepositoryと同じ@restコントローラークラスでapplicationcontextを宣言するだけです。次に、これをサービスクラスに渡します。サービスクラスは、コンストラクターを介してパラメーターを取得する必要があります。 Ex- public TopicService(Applicationcontext ctx) {this.topicRepository =context.getBean(TopicRepository.class); }

0
Mohan kumar

確認してください:

1)TopicRepositoryには@Repositoryの注釈が付けられています。

2)スキャンパッケージを構成しました。

<jpa:repositories base-package="mypkg.repositories"></jpa:repositories>
0
Maciej Kowalski