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在集成是不会有相关问题的。我在百度,优快云等网站搜索了相关问题,也有碰到该问题的,但都没有给出解决办法,我也根据搜素到的可能出现的相关问题都做了排查,比如写了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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值