我有一个使用hibernate的spring应用程序。要求是在GMT中持久化并检索时间戳。我已使用上下文侦听器将应用程序时区设置为GMT,如下所示。
TimeZone.setDefault(TimeZone.getTimeZone( “GMT”));
虽然应用程序现在一直保持GMT中的时间戳,但从休眠层检索时间戳是不一致的。时间戳在PST(服务器的时区)中返回一些时间。
我的数据检索查询如下
查询q = entityManager.createQuery(“SELECT DISTINCT f FROM foo as f WHERE f.ID =?1 AND f.ID2 =?2 ORDER> BY ID DESC”)。setParameter(1,id1).setParameter( 2,id2);
q.setFirstResult(跳过).setMaxResults(顶部).getResultList();
有关解决此问题的任何想法吗?
答案 0 :(得分:2)
时间戳没有任何时区。只有当您显示其(绝对)值时,才会使用时区为您提供有意义的时间表示。
每次要显示时间戳时,只需使用适当的时区(通过设置默认时区或将其设置为用于显示时间戳的日期格式)。
此外,IIRC,设置默认时区仅为当前线程设置它,并从当前线程启动线程。其他线程不受影响。