2012-01-13 111 views
0

我有一個使用休眠的應用程序。要求是堅持和檢索格林尼治標準時間的時間戳。我已經使用上下文偵聽器將應用程序時區設置爲GMT,如下所示。休眠在本地時間不一致地返回時間戳

TimeZone.setDefault(TimeZone.getTimeZone(「GMT」));

雖然應用程序現在一直保持GMT時間戳,但從休眠層檢索時間戳不一致。時間戳會在PST(服務器的時區)中返回一些時間。

我的數據檢索查詢是如下

查詢Q = entityManager.createQuery(「SELECT DISTINCT f起富爲f WHERE f.ID =α1和f.ID2 =α2ORDER> BY ID DESC「)。setParameter(1,id1).setParameter(2,id2);

q.setFirstResult(skip).setMaxResults(top).getResultList();

解決此問題的任何想法?

回答

2

時間戳沒有任何時區。只有當你顯示它的(絕對)值時區被用來給你一個有意義的時間表示。

每次您想要顯示時間戳時(通過設置默認時區或將其設置爲用於顯示時間戳的日期格式),只需使用適當的時區即可。

此外,設置默認時區的IIRC僅爲當前線程和從當前線程啓動的線程進行設置。其他線程不受影響。