java - 为我的 MSSQL 配置加载 bean 对象时出现 AbstractMethodError
问题描述
我正在尝试通过 spring 和 hibernate 连接和使用 MSSQL。我收到以下错误
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>
解决方案
我知道在初始化 bean 时通过 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>
推荐阅读
- javascript - 在 Fetch JS for Django 中添加 CSRF
- c# - 具有数据绑定和额外价值的组合框
- javascript - 在 HTML 中渲染箭头
- embedded - malloc 如何知道嵌入式系统中第一个可用块在哪里?
- jdbc - 使用 JDBC 建立连接
- arrays - 将一个数组中的重复对象推送到它们自己的数组中
- python-3.x - 获取空内容 Beautiful Soup Python
- netezza - 检查 IBM Netezza 中哪些程序修改了数据
- python - 我的代码出现下一个错误,我需要将 dato 传递给 csv:数组 dtype 之间不匹配('
下一个代码是真实的一部分,但在这部分中,我在屏幕上显示了 2 个不同的向量,你需要在 CSV 文件中传递它,但显示了下一个错误:data = asarray(["{0} \n{1}\n".format(sentence, np.array(bag_vector
- rest - 如何使用服务密钥创建 Google Api RESTful 端点?