Description
After update spring-boot from 1.4.0 to 1.4.1 the file META-INF/orm.xml
no longer loaded.
I have enabled org.hibernate
logger to level debug
and found this:
Spring Boot 1.4.0
(gradle bootRun
):
2016-09-21 20:17:15.555 INFO 14490 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-09-21 20:17:15.571 DEBUG 14490 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : PersistenceUnitInfo [
name: default
persistence provider classname: null
classloader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@3326fdda
excludeUnlistedClasses: true
JTA datasource: null
Non JTA datasource: org.apache.tomcat.jdbc.pool.DataSource@7061a6eb{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=org.h2.Driver; maxActive=100; maxIdle=100; minIdle=10; initialSize=10; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE; username=sa; validationQuery=SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=30000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; ignoreExceptionOnPreLoad=false; }
Transaction type: RESOURCE_LOCAL
PU root URL: file:/home/xakep/ws/line-meter/build/resources/main
Shared Cache Mode: UNSPECIFIED
Validation Mode: AUTO
Jar files URLs []
Managed classes names [
point.linemeter.model.Commutator
point.linemeter.model.Customer
point.linemeter.model.Employee
point.linemeter.model.Flat
point.linemeter.model.House
point.linemeter.model.LineMeasurement
point.linemeter.model.LineMeasurementResult
point.linemeter.model.NetworkNode
point.linemeter.model.Porch
point.linemeter.model.Port
point.linemeter.model.Street
point.linemeter.model.SubscriberLine]
Mapping files names [
META-INF/orm.xml]
Properties []
Spring Boot 1.4.1
(gradle bootRun
):
2016-09-21 20:21:25.991 INFO 15832 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-09-21 20:21:26.008 DEBUG 15832 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : PersistenceUnitInfo [
name: default
persistence provider classname: null
classloader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@3ac47ba3
excludeUnlistedClasses: true
JTA datasource: null
Non JTA datasource: org.apache.tomcat.jdbc.pool.DataSource@36f8afab{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=org.h2.Driver; maxActive=100; maxIdle=100; minIdle=10; initialSize=10; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false; password=********; url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE; username=sa; validationQuery=SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=3000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; ignoreExceptionOnPreLoad=false; }
Transaction type: RESOURCE_LOCAL
PU root URL: file:/home/xakep/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/1.4.1.RELEASE/db60078355dbe57b3ff5efcbf7b411fb5ae75306/spring-boot-autoconfigure-1.4.1.RELEASE.jar
Shared Cache Mode: UNSPECIFIED
Validation Mode: AUTO
Jar files URLs []
Managed classes names [
point.linemeter.model.Commutator
point.linemeter.model.Customer
point.linemeter.model.Employee
point.linemeter.model.Flat
point.linemeter.model.House
point.linemeter.model.LineMeasurement
point.linemeter.model.LineMeasurementResult
point.linemeter.model.NetworkNode
point.linemeter.model.Porch
point.linemeter.model.Port
point.linemeter.model.Street
point.linemeter.model.SubscriberLine]
Mapping files names []
Properties []
The main difference here is PU root URL
. In first case it is file:/home/xakep/ws/line-meter/build/resources/main
and in second case it is file:/home/xakep/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/1.4.1.RELEASE/db60078355dbe57b3ff5efcbf7b411fb5ae75306/spring-boot-autoconfigure-1.4.1.RELEASE.jar
.
Also I debug org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.getOrmXmlForDefaultPersistenceUnit()
and found that this line:
Resource ormXml = this.resourcePatternResolver.getResource(
this.defaultPersistenceUnitRootLocation + DEFAULT_ORM_XML_RESOURCE);
returns the META-INF/orm.xml
resource when used with spring-boot 1.4.0
, but the same line returns file:/home/xakep/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/1.4.1.RELEASE/db60078355dbe57b3ff5efcbf7b411fb5ae75306/spring-boot-autoconfigure-1.4.1.RELEASE.jarMETA-INF/orm.xml
when used with spring-boot 1.4.1
.
It can be not even bug with spring-boot
but with spring-orm
, but unfortunately I can't debug any futher.
The persistence unit used in my app is default persistence unit. Almost no configuration.