2012-10-14 5 views
2

db4o 데이터베이스에 타임 스탬프를 저장하려고하는데 몇 분 전에 저장 한 저장된 타임 스탬프가 현재 날짜와 많이 다릅니다. : 00 : 앞의 두 저장된 타임 스탬프 1969년 12월 31일 19로 저장 한db4o 데이터베이스에 TimeStamp를 저장하는 방법

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

: 여기

예를 출력입니다 내 코드를 세 번 실행 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 1

article 2 방법이 문제를 해결하기 위해 나에게 알려 주시기 바랍니다. 감사.

+0

타임 스탬프를 데이터베이스에 String 유형으로 저장해야합니까? 매번 데이터베이스에서 데이터를 검색 한 후 프로그램에서 문자열 값을 Timestamp 객체로 변환해야합니다. – John

+0

이 게시물을 [페이지] (http://community.versant.com/Forums/tabid/98/aft/12113/Default.aspx#34176)의 db4o 포럼에 복사하십시오. 희망 답변을 듣고. 감사. – John

답변

1

라인을 추가하여이 문제에 대한 해결책 :

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

내가 db4o는 포럼에서 Vidisha & 클로드의 도움을 얻었다. 여기에 나는 대답을 공유하고 다른 사람들을 도울 수 있기를 바랍니다. 다음은 새로운 코드입니다.

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 날짜를 사용하는 것이 좋습니다.

관련 문제