当前位置: 首页 > 面试题库 >

Hibernate在将Java Calendar对象读写到SQL TIMESTAMP时使用什么时区?

储国发
2023-03-14
问题内容

当Hibernate
JavaCalendar对象
写入 SQLTIMESTAMP列时,它将日期,计算机日期或日历对象(或其他日期)中指定的日期调整到哪个时区?

当Hibernate TIMESTAMP到日历对象,以哪个时区并把它翻译的日期?


问题答案:

当Hibernate将Java Calendar对象写入SQL
TIMESTAMP列时,它将日期,计算机日期或Calendar对象(或其他日期)中指定的日期调整到哪个时区?

Hiberante
3.x在CalendarType(请参阅HB-1006)中使用以下内容:

public void set(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
    final Calendar cal = (Calendar) value;
    //st.setTimestamp( index,  new Timestamp( cal.getTimeInMillis() ), cal ); //JDK 1.5 only
    st.setTimestamp( index,  new Timestamp( cal.getTime().getTime() ), cal );
}

因此,Hibernate使用PreparedStatement#setTimestamp(int, Timestamp, Calendar)哪个使用日历的时区。

当Hibernate将TIMESTAMP读入日历对象时,它将日期转换到哪个时区?

好了,再次让我们看一下这个CalendarType类:

public Object get(ResultSet rs, String name) throws HibernateException, SQLException {

    Timestamp ts = rs.getTimestamp(name);
    if (ts!=null) {
        Calendar cal = new GregorianCalendar();
        if ( Environment.jvmHasTimestampBug() ) {
            cal.setTime( new Date( ts.getTime() + ts.getNanos() / 1000000 ) );
        }
        else {
            cal.setTime(ts);
        }
        return cal;
    }
    else {
        return null;
    }

}

因此,Hibernate会 使用 _ 默认时区* _中 _ 的默认时区中_ 的当前时间来 _构造默认
GregorianCalendar
*_。

作为附带说明,我强烈建议阅读以下问题:

  • 夏令时和时区最佳实践


 类似资料:
  • 问题内容: 当Hibernate 将 Java 对象 写入 SQL 列时,它将日期,计算机日期或日历对象(或其他日期)中指定的日期调整到哪个时区? 当Hibernate 读 的到日历对象,以哪个时区并把它翻译的日期? 问题答案: 当Hibernate将Java Calendar对象写入SQL TIMESTAMP列时,它将日期,计算机日期或Calendar对象(或其他日期)中指定的日期调整到哪个时区

  • 问题内容: 有人可以在何时使用以及在Hibernate中为我提供用例帮助吗? 问题答案: @Version用于通过Hibernate 实现乐观锁定,这意味着没有两个事务会在冲突时同时覆盖数据。 如果两个线程同时读取数据,并且两个线程都尝试使用不同的值更新同一行,则Hibernate将使用该字段来检查该行是否已更新。 在提交之前,每个事务都将验证没有其他事务已修改其数据。如果被修改,则最后一个事务遇

  • 问题内容: 问候语,当前正在开发小型Web服务应用程序,其中来自Web服务(使用CXF + Spring)的响应已处理并保存到数据库中。为了使用数据库,我正在使用Hibernate(3.5)。在网络上浏览一些Hibernate + Spring示例,我经常可以看到HibernateTemplate的用法,因此我对此感到有些困惑,想问一下: 您是否在Hibernate3应用程序中使用Hibernat

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 我收到消息“文字与格式字符串不匹配”。 例如,以下是Java类中的一些方法: 这是该类的Hibernate配置文件中的映射: 这是该列的DDL: 我尝试在hibernate配置中将type =“ date”和“ timestamp”(不是同时)设置为attr,然后将Java类型从String更改为Date,但这给了我一个不同的错误。我读了一些有关绑定参数的内容,但是无法做到这一点。 当

  • 考虑类家长: 和类儿童: 如果我在应用程序中创建一个新的子对象,并将其放入父对象的children字段中,然后持久化父对象,为什么Hibernate不自动更新子对象的Parent字段(以便设置parentID列)?