2017-01-04 16 views
0

エンティティ用のリポジトリ(通常のJPAリポジトリ)と、監査情報(RevisionRepository、休止状態の一部)を追跡する別のリポジトリが必要です。同じアプリケーション内でRevisionRepositoryとJpaRepositoryの両方を使用する

私のアプリケーションでは動作しないようです。

は、私の知る限り理解できるように、リポジトリの各タイプには、それ自身の工場(repositoryFactoryBeanClass、およびEnversRevisionRepositoryFactoryBeanRevisionRepositoryとJpaRepository)でインスタンス化される必要があり、それは@EnableJpaRepositoriesアノテーションで設定することができます。

問題は、その注釈のうちの1つのみがメインクラスにある可能性があるということです。私はこれがxml形式(here)で行われている例を見てきましたが、注釈でこれを行う方法はわかりません。

どうすればいいですか?

答えて

0

は、JpaRepositoryFactoryBeanを拡張しているため、両方の設定を有効にするには、設定にEnversRevisionRepositoryFactoryBeanを指定するだけで済みます。内部で何が起こる

EnversRevisionRepositoryFactoryBeanがあなたのリポジトリが正しいインタフェースを実装していないと判断した場合、それはこの場合にはJpaRepositoryFactoryBeanあるスーパー実装に委任することです。

+0

これは私が試したときに発生するエラーです: 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:[... repositories.MyRevisionRepository]の適格なBeanが依存関係[...リポジトリ]で見つかりませんでした。 MyRevisionRepository]:この依存関係のautowire候補となる少なくとも1つのbeanが必要です。依存関係の注釈:{} – soandos

+0

あなたは 'MyRevisionRepository'のインターフェースを投稿できますか? – Naros

0

どういうわけか、次のコードに示すように、JpaRepositoryFactoryBeanEnversRevisionRepositoryFactoryBeanの2つの個別の構成クラスを作成する必要があります。

@EnableJpaRepositories(basePackages = "com.example.jpa.dao") 
class JpaConfig {} 

@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean, basePackages = "com.example.envers.dao") 
class EnversConfig {} 

私のために働きます。しかし、EnversRevisionRepositoryFactoryBeanRevisionRepositoryにのみ対応し、JPRepositoryではなく、EnversRevisionRepositoryFactoryBean extends JpaRepositoryFactoryBeanにしか機能しない理由が見つかりませんでした。

回答を編集して説明を加えてください。他の人にも役立つようにしてください。

関連する問題