Ich habe ein Projekt, in dem ich feder-data-jpa mit Hibernate verwende und einen Integrationstest schreibe, der eine H2 in der Speicherdatenbank verwendet.Spring-Data-Jpa DriverManagerDataSource wurde zweimal initialisiert
In meinem DB Script nach der Tabellenerstellung, ich bin tatsächlich ein paar Einfügeanweisungen
INSERT INTO COST (paymentType, costValue, costCategory) VALUES ('INTERNATIONAL', 100, 'LICENSES');
INSERT INTO COST (paymentType, costValue, costCategory) VALUES ('INTERNATIONAL', 20, 'HARDWARE');
Nach dem Ausführen meiner Integrationstest laufen, sah ich, dass 4 Einträge dort anstelle des 2.
zurückgekehrt warenDie Protokolle bestätigten, dass der Test die Datenquelle zweimal initialisierte, und ich würde gerne verstehen, warum. Jede Hilfe wäre willkommen.
2017-04-26 12:19:38; LOG_LEVEL = "DEBUG"; SOURCE = "org.springframework.jdbc.datasource.DriverManagerDataSource"; EVENT_MESSAGE = "Erstellen neuer JDBC Driver Anschluss an [jdbc: h2: mem: Test; DB_CLOSE_DELAY = -1; INIT = RUNSCRIPT FROM 'Classpath: create-db.sql']"
In meiner Frühlings-Konfigurationsdatei, mit @EnableJpaRepositories kommentierte, erstelle ich Bohnen dann die Persistenz im Zusammenhang, wie unten
@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;
}
die Eigenschaften sind
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
Prost Kris
gezeigt 210
Würdest du dir die hibProperties() -Methode zeigen und deine DATABASE_URL –
Ich habe den ursprünglichen Beitrag bearbeitet, um sie einzuschließen..danke – krisrr3