0

我想以 c3p0 作为连接池动态设置 MySQL JDBC 连接的时区。要为给定的 MySQL JDBC 连接设置时区,我知道我可以使用“SET time_zone = '+02:00';”,但是如果我在从池中获取的连接上设置它,我假设连接将具有这个时区当它被归还给池并给一个新的请求时,女巫请求连接?!?我理解正确吗?

如果是,我如何以一种方式动态设置池连接将其时区恢复为原始时区(在我的情况下,我在 MySQL 和 JCM 中使用 UTC 作为默认值,在我的春天启动期间通过 TimeZone.setDefault(UTC)语境)。

这是我的(报告)道中的代码片段

public TrafficDuringDayGroupedByPhoneEvent countAllSummariesForTimeReport(Integer childId, Date start, Date end, MessageType type, TimeZone timezone) {


    Integer[] res = {0, 0, 0, 0};
    Session session = getSession();

    //SET time_zone = '+02:00';
    String sql = "select count(calls.d), d from (SELECT  start_time, \n"
            + "(case when hour(start_time) >= 6 and  hour(start_time) < 9 then 'morning'\n"
            + "when hour(start_time) >= 9 and  hour(start_time) < 15 then 'day'\n"
            + "when hour(start_time) >= 15 and  hour(start_time) < 21 then 'aft'\n"
            + "when hour(start_time) >= 21 and  hour(start_time) <= 24 then 'night'\n"
            + "when hour(start_time) < 6 then 'night' end) as d\n" + "FROM bpr_report_event b inner join ";

    ....
}

我的问题类似于下面的问题,除了我想为每个连接动态设置它,而不是与下面问题中的那个人相同的时区。

使用 Spring 和 DBCP 和 MySQL 设置连接时区

4

1 回答 1

0

您可以编写一个 c3p0 ConnectionCustomizer 将时区设置回 UTC onCheckin。看

http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/ConnectionCustomizer.html

http://www.mchange.com/projects/c3p0/#connection_customizers

于 2013-01-22T01:32:02.723 回答