2015-09-08 20 views
30

JPA üzerinden Hazırda Bekletme ile etkileşimde bulunmak için Spring ORM 4.2.1.RELEASE kullanıyoruz. Her şey, Hazırda Bekletme 4.3.11.Final ile iyi çalışır, ancak Hazırda Bekletme 5'e yükseltmeye çalıştığımızda, SessionFactory oluştururken bir AbstractMethodError ile bozulur.SessionFactory içinde AbstractMethodError Hazırda bekletme durumuna getirme 5

Yayımlama notlarına göre, Spring 4.2.1, Hazırda Bekletme 5'i destekliyor. Maven bağımlılık ağacının incelenmesi, herhangi bir Yinelenen veya Yayılmamış Yinelenen veya Yayılmamış sürümlerini göstermedi. Bildirilen belirli satır (https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java satır 278) Hazırda bekleyen tümleştiriciler üzerinde yinelemekte, ancak hiç kullanmıyoruz, bu nedenle tümleştiriciler listesi mantıksal olarak boş olmalı (ve dolayısıyla yinelemeyin).

Baharda bir hata (veya destek eksikliği) olup olmadığını veya yanlış bir şey yapıp yapmadığımızı bilen var mı? Uygulama günlüğünden

Özü: Bahar bağlamdan

2015-09-08 13:17:45,452 [main] INFO org.springframework.test.context.support.DefaultTestContextBootstrapper - Using TestExecutionListeners: [or[email protected]20f0461e, org.springframework.test[email protected]7e8b6c76, org.springframework.test.context.support[email protected], org.springfra[email protected]531d1003, org.springframew[email protected]19065f96, org.sp[email protected]716d7daf] 
2015-09-08 13:17:45,460 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [dataContext.xml] 
2015-09-08 13:17:45,689 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [systemContext.xml] 
2015-09-08 13:17:45,779 [main] INFO org.springframework.context.support.GenericApplicationContext - Refreshing [email protected]56a656: startup date [Tue Sep 08 13:17:45 AEST 2015]; root of context hierarchy 
2015-09-08 13:17:45,846 [main] INFO org.springframework.context.support.PropertySourcesPlaceholderConfigurer - Loading properties file from class path resource [application.properties] 
2015-09-08 13:17:45,900 [MLog-Init-Reporter] INFO com.mchange.v2.log.MLog - MLog clients using slf4j logging. 
2015-09-08 13:17:45,921 [main] INFO com.mchange.v2.c3p0.C3P0Registry - Initializing c3p0-0.9.5.1 [built 16-June-2015 00:06:36 -0700; debug? true; trace: 10] 
2015-09-08 13:17:46,046 [main] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default' 
2015-09-08 13:17:46,060 [main] INFO org.hibernate.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [ 
    name: default 
    ...] 
2015-09-08 13:17:46,136 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {5.0.1.Final} 
2015-09-08 13:17:46,137 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found 
2015-09-08 13:17:46,138 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist 
2015-09-08 13:17:46,166 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.0.0.Final} 
2015-09-08 13:17:46,274 [main] INFO com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> z8kfsx9b1bfny2k11h75wx|4aa092d5, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.hsqldb.jdbcDriver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> z8kfsx9b1bfny2k11h75wx|4aa092d5, idleConnectionTestPeriod -> 30, initialPoolSize -> 3, jdbcUrl -> jdbc:hsqldb:mem:testDB, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> true, testConnectionOnCheckout -> true, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ] 
2015-09-08 13:17:46,396 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect 
2015-09-08 13:17:46,429 [main] INFO org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl - HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4 
2015-09-08 13:17:46,592 [main] WARN org.springframework.context.support.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [dataContext.xml]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1045) ~[spring-context-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:824) ~[spring-context-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) [spring-context-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125) [spring-test-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    ... rows deleted 
Caused by: java.lang.AbstractMethodError 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:278) ~[hibernate-core-5.0.1.Final.jar:5.0.1.Final] 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) ~[hibernate-core-5.0.1.Final.jar:5.0.1.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802) ~[hibernate-entitymanager-5.0.1.Final.jar:5.0.1.Final] 
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343) ~[spring-orm-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) ~[spring-orm-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] 
    ... 41 more 

Özü:

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <property name="packagesToScan" value="au.gov.qld.ssq.cofa.domain"/> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="hibernate.dialect" value="${hibernate.dialect}"/> 
      <entry key="hibernate.show_sql" value="${hibernate.show_sql}"/> 
      <entry key="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}"/> 
     </map> 
    </property> 
</bean> 

cevap

51

Bu hata Bahar ile ilgisi yoktur. Sınıf yolunuzda bir Hazırda Bekleme 5 uyumsuz Integrator var. Bunlar ServiceRegistry aracılığıyla algılanır.

Sık karşılaşılan bir sorun, Hazırda Bekletme 5 ile uyumlu olmayan eski sürümleri Jadira Usertype'dur. Sınıf yolunuzda 5.0.0 sürümünden önceki Jadira Kullanıcı türü varsa, bu özel durumu alırsınız. Bu durum sizin için geçerli değilse ve hangi kitaplıktan sorumlu olduğunuzdan emin değilseniz, on line 278 of SessionFactoryImpl bir kesme noktası açın ve istisnaya neden olan Entegratör sınıfına bakın.

+0

Teşekkürler, Aleksander. Evet, Jadira Usertype kullanıyoruz. Birinin aynı şeye benzeyen https://stackoverflow.com/questions/31775410/spring4-2-1-hibernate5-integrate-abstract-method-error/31915933#31915933 sorduğunu görüyorum. Jadira güncellemelerini bekleyeceğiz sanırım. – ThrawnCA

+0

Bu, https://github.com/JadiraOrg/jadira/issues/41 adresinde izlenmekte ve KAFA'da çözülmüştür :). Sadece bir sonraki sürümü bekliyorum. – ThrawnCA

+0

Başka soruda önerildiği gibi Jadira'yı düşürüp AttributeConverter'i kullanabileceğimiz anlaşılıyor. – ThrawnCA

İlgili konular