Java 问题:当';hibernate.方言';未设定
正在尝试通过数据源使用Microsoft驱动程序将spring代码连接到SQL Server数据库 应用程序上下文.xml:Java 问题:当';hibernate.方言';未设定,java,spring,jdbc,datasource,Java,Spring,Jdbc,Datasource,正在尝试通过数据源使用Microsoft驱动程序将spring代码连接到SQL Server数据库 应用程序上下文.xml: <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}"/>
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="${database.driverClassName}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
database.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
database.url=jdbc\:jtds\:sqlserver\://DB_ip:DB_Port/MyDB;instance=Some_Ins;integratedSecurity=true
database.username=
database.password=
错误
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
已编辑
Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97)
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:170)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1797)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1755)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
... 39 more
无法确定根本原因。当我的应用程序无法连接到数据库时,我会遇到相同的异常。因此,即使URL错误,或者数据库名称错误,或者用户/密码组合无效,也会引发相同的异常
因此,我想您应该验证连接属性,但要小心设置所有内容,从db服务器url、端口、db名称、用户/密码开始。当我的应用程序无法连接到数据库时,我会遇到相同的异常。因此,即使URL错误,或者数据库名称错误,或者用户/密码组合无效,也会引发相同的异常
因此,我想您应该验证连接属性,但要注意将所有属性设置为正确的,从db服务器url、端口、db名称、用户/密码开始
database.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
database.url=jdbc\:jtds\:sqlserver\://DB_ip:DB_Port/MyDB;instance=Some_Ins;integratedSecurity=true
看起来您使用的是普通的sql server驱动程序,而不是jTDS驱动程序,因此我至少希望URL没有:jTDS
部分。在url中似乎也有不必要的斜杠。将数据库.url
更改为以下内容
database.url=jdbc:sqlserver://DB_ip:DB_Port/MyDB;instance=Some_Ins;integratedSecurity=true
这应该是普通SQL Server驱动程序的正确URL。在属性中,您有以下两个属性
database.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
database.url=jdbc\:jtds\:sqlserver\://DB_ip:DB_Port/MyDB;instance=Some_Ins;integratedSecurity=true
看起来您使用的是普通的sql server驱动程序,而不是jTDS驱动程序,因此我至少希望URL没有:jTDS
部分。在url中似乎也有不必要的斜杠。将数据库.url
更改为以下内容
database.url=jdbc:sqlserver://DB_ip:DB_Port/MyDB;instance=Some_Ins;integratedSecurity=true
这应该是普通SQL Server驱动程序的正确URL。为什么要进行向下投票。请解释一下,如果遗漏了任何内容,可以添加。您使用的是哪种dbms?您实际读取了堆栈跟踪吗?您正在使用hibernate,但尚未告诉hibernate方言是什么。。。因此,它尝试使用连接,但显然无法连接。您尝试使用属性,但要这样做,您需要添加一个
PropertyPlaceHolderConfigure
或使用
,否则您的${..}
不会被替换。由于您没有发布所有必需的内容,而只是发布了一些片段,所以无法判断到底是什么错误。@M.Deinum我已经准备好了,替换工作正常。。而且我已经手动将值与相应的属性持有者放置在一起。仍然面临同样的问题。请确保您的用户名/密码确实正确,并且确保您的URL是正确的。还有,URL中所有的斜杠是什么,你不需要这些。。。接下来,您的URL似乎是错误的,如果您使用的是纯sql server的东西,而不是jdts的东西,那么我希望URL的开头是jdbc:sqlserver
,而不是您现在拥有的。为什么要向下投票..请解释一下,如果缺少任何东西,可以添加。您使用的是哪种dbms?您实际阅读了堆栈跟踪吗?您正在使用hibernate,但尚未告诉hibernate方言是什么。。。因此,它尝试使用连接,但显然无法连接。您尝试使用属性,但要这样做,您需要添加一个PropertyPlaceHolderConfigure
或使用
,否则您的${..}
不会被替换。由于您没有发布所有必需的内容,而只是发布了一些片段,所以无法判断到底是什么错误。@M.Deinum我已经准备好了,替换工作正常。。而且我已经手动将值与相应的属性持有者放置在一起。仍然面临同样的问题。请确保您的用户名/密码确实正确,并且确保您的URL是正确的。还有,URL中所有的斜杠是什么,你不需要这些。。。接下来,您的URL似乎是错误的,如果您使用的是普通的sql server内容,而不是jdts内容,那么我希望URL的开头是jdbc:sqlserver
,而不是您现在的URL。URL是正确的,经过验证并尝试了windows身份验证和uname以及密码(两个场景中的错误相同)。我遗漏了一些内容-我收到的异常是“hibernate.dialogue未设置时,对方言ResolutionInfo的访问不能为null”。我正在使用hibernate 4.3.11。但是我在hibernate源代码中找到了引发异常的确切位置——您也可以这样做。找到引发异常的位置,并在该区域进行一些调试,也许您会发现问题所在。这就是为什么我喜欢使用Hibernate+Spring的原因,因为它们是开源的,我可以在没有其他功能的情况下调试框架代码。另外,可能堆栈跟踪更长,您只将顶层异常+第一个原因放在-我想您错过了最后一个“原因”(应该是org.Hibernate.hibernateeexception的一个实例)URL是正确的,已验证并尝试了windows身份验证和uname以及密码(在两个场景中都是相同的错误)。我遗漏了一些内容-我收到的异常是“hibernate.Dialogue“未设置”时访问DialogResolutionInfo不能为null”。我正在使用hibernate 4.3.11。但是我在hibernate源代码中找到了引发异常的确切位置——您也可以这样做。找到引发异常的位置,并在该区域进行一些调试,也许您会发现问题所在。这就是为什么我喜欢使用Hibernate+Spring的原因,因为它们是开源的,我可以在没有其他功能的情况下调试框架代码。另外,可能堆栈跟踪更长,您只将顶层异常+第一个原因放在-我想您错过了最后一个“原因”(应该是org.Hibernate.hibernateeexception的一个实例)