16

packagesToScanで注釈を付けて保持したいクラスを含むパッケージ(たとえば)があり@Entityます。

構成を定義している間ApplicationContext、私は次のようにしました。


@Configuration
@EnableJpaRepositories("packagesToScan")
@EnableTransactionManagement
@PropertySource("server/jdbc.properties")
@ComponentScan("packagesToScan")

public class JpaContext {

... // Other configurations ....

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
    emf.setDataSource(this.dataSource());
    emf.setJpaVendorAdapter(this.jpaVendorAdapter());
    emf.setPackagesToScan("packagesToScan");
    emf.setJpaProperties(this.hibernateProperties());
    return emf;

 }

packagesToScan開発中に、永続化の要件 (主キーがないなど) を満たさないクラスがいくつかあります。このため、ApplicationContextセットアップの失敗のためにテストを実行できません。

さて、 選択したいくつかのクラスだけをスキャンしたり、 内のいくつかのクラスを無視したりする方法はありますpackagesToScanか?

4

4 に答える 4

6

私は同様の問題に出くわしました。パッケージからすべてではなく一部のエンティティを追加する必要がありました。これが私がやった方法です:

// add all entities from some package
localContainerEntityManagerFactoryBean.setPackagesToScan("com.companyname.model");
// add only required enitites from a libray
localContainerEntityManagerFactoryBean.setPersistenceUnitPostProcessors(new PersistenceUnitPostProcessor() {
        @Override
        public void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo persistenceUnit) {
            persistenceUnit.addManagedClassName("com.companyname.common.model.SomeEntityName");
        }
    });
于 2016-12-01T11:41:59.443 に答える