【发布时间】:2011-08-23 16:07:46
【问题描述】:
我的环境
- Java 5
- 春季 2.5.5
- DBCP 数据源 (org.apache.commons.dbcp.BasicDataSource)
- MySQL
类似帖子
链接
我的问题
- 我需要在我的连接上设置时区,以防止在处理 TIMESTAMP 列时发生转换。
我的想法/研究
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="URL" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.passwd}" />
<property name="connectionCachingEnabled" value="true"/>
<property name="sessionTimeZone" value="GMT-3"/>
</bean>
求助区:)
- 但这不起作用!!
- 我这里想要的是一个简单的方法,优先使用Spring在jdbc连接上配置时区。
提前感谢任何帮助/提示/建议/知识分享
解决方案:
我的解决方案基于这篇文章中收集的提示!谢谢大家!
(...)
@Override
public Connection getConnection() {
Connection conn = null;
Statement statement = null;
try {
conn = super.getConnection();
statement = conn.createStatement();
statement.execute("SET time_zone = \'" + timezone+"\'");
} catch (SQLException e) {
LOG.fatal("Error while SET time_zone", e);
} finally {
try {
statement.close();
} catch (SQLException e) {
LOG.warn("Error while closing statement", e);
}
}
if(LOG.isDebugEnabled())
LOG.debug("SET time_zone("+timezone+") for connection, succeed!");
return conn;
}
(...)
在我的 Spring 配置文件中:
<bean id="dataSource" class="com.my.package.dbcp.TimezoneEnabledDataSource" destroy-method="close">
(...)
<property name="timezone" value="${database.timezone}" />
(...)
</bean>
我希望这篇文章可以在将来对某人有所帮助。有任何问题请联系我!
【问题讨论】:
-
您确定可以识别 GMT-3 吗?例如,您是否尝试过
America/Los_Angeles(为了测试) -
我会不断更新我的帖子,提供我所有的发现!我刚刚放弃寻找有关 DBCP 配置的信息!
-
@Bozho,我会在几个小时内再次检查我不是@home,但作为同行,我提到错误的链接是抱怨属性(无效属性'sessionTimeZone'),而不是物有所值。
标签: java mysql spring jdbc timezone