私はHibernateでspring-data-jpaを使用しているプロジェクトを持っており、メモリデータベースにH2を使用する統合テストを作成しています。私のDBのスクリプトでSpring-Data-Jpa DriverManagerDataSourceが2回初期化されました
は、テーブルの作成後、私は実際に私の統合テストを実行した後、いくつかの挿入文
INSERT INTO COST (paymentType, costValue, costCategory) VALUES ('INTERNATIONAL', 100, 'LICENSES');
INSERT INTO COST (paymentType, costValue, costCategory) VALUES ('INTERNATIONAL', 20, 'HARDWARE');
を実行しています、私は4つのエントリではなく、2
のが返還されたことを見ましたログにより、テストでデータソースが2回初期化されていることが確認されました。その理由を理解したいと思います。どんな助けもありがとう。
2017-04-26 12:19:38; LOG_LEVEL = "DEBUG"; SOURCE = "org.springframework.jdbc.datasource.DriverManagerDataSource"; 、私の春の設定ファイルで
EVENT_MESSAGEは= "[: 'を作成-db.sqlクラスパス' からINIT = RUNSCRIPT; DB_CLOSE_DELAY = -1テスト:H2:MEM JDBC]に新しいJDBCのDriverManager接続の作成します"プロパティは
db.driver = org.h2.Driver
db.url = jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM \'classpath:create-db.sql\'
db.username = cost
db.password = cost
entitymanager.packages.to.scan = com.somecompany.cost
hibernate.dialect = org.hibernate.dialect.H2Dialect
hibernate.show_sql = false
hibernate.format_sql = false
乾杯
クリスある@Bean
public JpaTransactionManager transactionManager() {
if (transactionManager == null) {
transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
}
return transactionManager;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
if (entityManagerFactoryBean == null) {
entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
entityManagerFactoryBean.setPackagesToScan(env.getRequiredProperty(ENTITYMANAGER_PACKAGES_TO_SCAN));
entityManagerFactoryBean.setJpaProperties(hibProperties());
}
return entityManagerFactoryBean;
}
@Bean
public DriverManagerDataSource dataSource() {
if (dataSource == null) {
dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getRequiredProperty(DATABASE_DRIVER));
dataSource.setUrl(env.getRequiredProperty(DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(DATABASE_PASSWORD));
}
return dataSource;
}
以下のように@EnableJpaRepositoriesで注釈付け、それから永続関連Beanを作成します210
hibProperties()メソッドを表示しますか?DATABASE_URL –
元の投稿を編集して編集しました。 – krisrr3