2016-10-25 5 views
0

を見つけることができない私はCRUDリポジトリのインターフェースを持っている@Autowiredリポジトリ豆に

@Repository 
public interface SampleRepository extends CrudRepository<Metadata, String> { 
    findById(UUID id); 
} 

I am trying to use it in my test class which is in another package 
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {TestConfig.class}) 
@WebAppConfiguration 
public class SampleRepositoryTest { 

    @Autowired 
    private SampleRepository sampleRepository; 

ITSはSampleRepositoryとはBean定義が見つからなかったと言います。誰も私がこのリポジトリをオートワイヤリングできない理由を助けることができます

+1

'TestConfig'クラスはSpring Data JPAを有効にしてレポスキャンを実行しますか? – CollinD

+0

その設定を確認する必要があります。 (そして '@ Repository'は完全に不要です。) – chrylis

+0

どうすればいいですか? – user1733735

答えて

1

コメントに記載されています:@あなたのSampleRepositoryのためのリポジトリは必要ありません。テストの@WebAppConfigurationも奇妙に見えます。 しかし、両方ともOKです。

さらに重要なのは:あなたが提供されていない場合でも、あなたのTestContext.javaは、それがそのようにする必要がありますファイル:

@Configuration 
// be sure to provide base package where your repostories are located 
@EnableJpaRepositories(basePackages = { 
    "com.acme.repositories" 
}) 
public class TestContext { 
    // your datasource 
    @Bean 
    public DataSource dataSource() { 
    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 
    return builder.setType(EmbeddedDatabaseType.HSQL).build(); 
    } 

    // your entity manager factory 
    @Bean 
    public EntityManagerFactory entityManagerFactory() { 

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
    vendorAdapter.setGenerateDdl(true); 

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
    factory.setJpaVendorAdapter(vendorAdapter); 
    // your domain classes package 
    factory.setPackagesToScan("com.acme.domain"); 
    factory.setDataSource(dataSource()); 
    factory.afterPropertiesSet(); 

    return factory.getObject(); 
    } 

    // your jpa transaction manager 
    @Bean 
    public PlatformTransactionManager transactionManager() { 
    JpaTransactionManager txManager = new JpaTransactionManager(); 
    txManager.setEntityManagerFactory(entityManagerFactory()); 
    return txManager; 
    } 
} 
+0

jpaリポジトリと同様の問題が発生しました。私はこれ以外の私以外の人は私のために働いたと言うことができます。 'EnableJpaRepositories'が鍵でした。どうもありがとう。 – Jayesh

0

@Repositoryは必要ありません。

public interface SampleRepository extends CrudRepository<Metadata, String> { 
@Query(value = "select * from db.tabel where id = :id", nativeQuery = true) 
findById(@Param("id") UUID id); 
} 
関連する問題