`
19841026
  • 浏览: 59941 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

s2sh集成dataSource配置无效的问题 -Access denied for user 'sa'@'localhost'

阅读更多
先附上applicationContext.xml关于datasource的配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="hjy1984" />
</bean>
<!-- Hibernate配置 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.form_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>

新版的hibernate4.2+spring3.2+struts2.x在集成架构时会出现 java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)
的错误,诡异的是配置的jdbc根本就没有用sa用户名,在低版本的hibernate和spring在集成是不会有相关问题的。我在百度,CSDN等网站搜索了相关问题,也有碰到该问题的,但都没有给出解决办法,我也根据搜素到的可能出现的相关问题都做了排查,比如写了java jdbc方法直接测试链接,排除设置导致的错误;通过对root做create等权限检查等,尝试了很多办法都不行,最后比较肯定的是配置的datasource被其他config覆盖了,于是我去看了下org.springframework.orm.hibernate4.LocalSessionFactoryBean的源码,发现可能与下面的hibernateProperties有关系,但也没找到解决办法。偶然一次我用360的搜索so.com搜索了一下相关问题,在http://stackoverflow.com/上找到了解决办法,原来是hibernate自带的jar内置的hibernte.properties默认会选择sa用户名,并将我们配置的dataSource覆盖了,只有在hibernateProperties下面再次配置jdbc的url,username和password才能生效。
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.form_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">hjy1984</prop>
<prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/test</prop>
<prop key="hibernate.default_batch_fetch_size">30</prop>
</props>
</property>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics