2012-10-14 52 views
2

我試圖將時間戳存儲到db4o數據庫中,但存儲幾分鐘前存儲的時間戳與當前日期大不相同。如何將TimeStamp存儲到db4o數據庫中

下面是輸出示例:

1969-12-31 19:00:00.741 
1969-12-31 19:00:00.772 
2012-10-14 00:23:22.713 

之前的兩個存儲時間戳被存儲爲1969-12-31 19:00:00.7xx後,我跑我的代碼三次。

這是代碼。

import java.sql.Timestamp; 

import com.db4o.Db4oEmbedded; 
import com.db4o.ObjectContainer; 
import com.db4o.ObjectSet; 
import com.db4o.config.EmbeddedConfiguration; 

public class dbTest { 

    public static void listResults(ObjectSet<Timestamp> results) { 

    for (Timestamp o : results) { 
     System.out.println(o); 
    } 
    } 

    public static void main(String[] args) { 

    EmbeddedConfiguration config = Db4oEmbedded.newConfiguration(); 
    config.common().objectClass(Timestamp.class).storeTransientFields(true); 

    ObjectContainer container = Db4oEmbedded 
     .openFile(config, "timestamps.db4o"); 

    try { 

     long now = System.currentTimeMillis(); 
     container.store(new Timestamp(now)); 

     final ObjectSet<Timestamp> results = container.query(Timestamp.class); 
     listResults(results); 
    } 
    finally { 
     container.close(); 
    } 
    } 
} 

我看了下面的兩篇相關文章,但問題還沒有解決。

article 1article 2

請告訴我如何解決這個問題。謝謝。

+0

我應該將時間戳存儲爲數據庫中的字符串類型嗎?每次程序需要在從數據庫檢索數據後,將字符串值轉換爲Timestamp對象。 – John

+0

我把這篇文章複製到[page]的db4o論壇(http://community.versant.com/Forums/tabid/98/aft/12113/Default.aspx#34176)。希望聽到一些答案。謝謝。 – John

回答

1

添加一行的解決了這個問題:

config.common().objectClass(Timestamp.class).translate(new TSerializable()); 

我得到的幫助來自維迪斯哈&克勞德在db4o的論壇。我在這裏分享答案,並希望幫助其他人。這是新的代碼。

import java.sql.Timestamp; 

import com.db4o.Db4oEmbedded; 
import com.db4o.ObjectContainer; 
import com.db4o.ObjectSet; 
import com.db4o.config.EmbeddedConfiguration; 

public class dbTest { 

    public static void listResults(ObjectSet<Timestamp> results) { 

    for (Timestamp o : results) { 
     System.out.println(o); 
    } 
    } 

    public static void main(String[] args) { 

    EmbeddedConfiguration config = Db4oEmbedded.newConfiguration(); 
    config.common().objectClass(Timestamp.class).translate(new TSerializable()); 
    ObjectContainer container = Db4oEmbedded 
     .openFile(config, "timestamps.db4o"); 

    try { 

     long now = System.currentTimeMillis(); 
     container.store(new Timestamp(now)); 

     final ObjectSet<Timestamp> results = container.query(Timestamp.class); 
     listResults(results); 
    } 
    finally { 
     container.close(); 
    } 
    } 
} 

建議您使用可由db4o正確處理的JDK日期。

相關問題