AbstractMethodError при загрузке объекта bean для моей конфигурации MSSQL - PullRequest
2 голосов
/ 13 марта 2019

Я пытаюсь подключиться и использовать MSSQL через Spring и Hibernate. Я получаю следующую ошибку

Caused by: java.lang.AbstractMethodError
at org.apache.commons.dbcp2.DelegatingConnection.getSchema(DelegatingConnection.java:989)
at org.apache.commons.dbcp2.DelegatingConnection.getSchema(DelegatingConnection.java:989)
at org.hibernate.engine.jdbc.env.internal.DefaultSchemaNameResolver$SchemaNameResolverJava17Delegate.resolveSchemaName(DefaultSchemaNameResolver.java:77)
at org.hibernate.engine.jdbc.env.internal.DefaultSchemaNameResolver.resolveSchemaName(DefaultSchemaNameResolver.java:70)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.determineCurrentSchemaName(JdbcEnvironmentImpl.java:298)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.<init>(JdbcEnvironmentImpl.java:232)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:114)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:861)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:888)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)

Используется dialect org.hibernate.dialect.SQLServer2012Dialect, а драйвер для подключения com.microsoft.sqlserver.jdbc.SQLServerDriver. Что я мог сделать не так?

Я попытался установить свойство validationQuery

<bean class="org.apache.commons.dbcp2.BasicDataSource">
 <property name="connectionProperties"
             value="password=123;user=111"></property>
             <property name="maxTotal"  
value="8" />
            <property name="driverClassName" 
value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
            <property name="url" 
value="url" />
            <property name="testOnBorrow" value="true"/>
            <property name="validationQuery" value="select 1" />
</bean>

Зависимость maven для драйвера:

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
    </dependency>

1 Ответ

0 голосов
/ 15 марта 2019

Я понял, что проблема заключается в создании соединения с помощью dbcp2, когда компонент инициализируется. Поэтому я обновил драйвер sql, и он решил проблему для меня.

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...