MongoDB Java驱动程序3.x:如何保存Java.sql.Timestamp?

MongoDB Java驱动程序3.x:如何保存Java.sql.Timestamp?,java,mongodb,Java,Mongodb,我遵循了教程 但是当我用java.sql.Timestamp值保存一个文档时,编解码器出现了错误。我从Driver3.x了解到编解码器,但我不知道如何使用它们来解决这个问题 我习惯使用2.x驱动程序,但对3.x驱动程序不太熟悉。尝试通过以下方式更改代码注册表的顺序: @Test public void testTimestamp() { Map<BsonType, Class<?>> replacements = new HashMap<BsonType,

我遵循了教程

但是当我用java.sql.Timestamp值保存一个文档时,编解码器出现了错误。我从Driver3.x了解到编解码器,但我不知道如何使用它们来解决这个问题


我习惯使用2.x驱动程序,但对3.x驱动程序不太熟悉。

尝试通过以下方式更改代码注册表的顺序:

@Test
public void testTimestamp() {
    Map<BsonType, Class<?>> replacements = new HashMap<BsonType, Class<?>>();
    replacements.put(BsonType.DATE_TIME, Timestamp.class);
    BsonTypeClassMap bsonTypeClassMap = new BsonTypeClassMap(replacements);
    DocumentCodecProvider documentCodecProvider =
            new DocumentCodecProvider(bsonTypeClassMap);
    CodecRegistry codecRegistry = CodecRegistries.fromRegistries(
            CodecRegistries.fromCodecs(
                    new TimestampCodec()),
            CodecRegistries.fromProviders(documentCodecProvider),
            MongoClient.getDefaultCodecRegistry());
    Builder optionsBuilder = new MongoClientOptions.Builder();
    optionsBuilder.codecRegistry(codecRegistry);
    MongoClientOptions options = optionsBuilder.build();
    MongoClient mongo = new MongoClient(new ServerAddress(), options);
    MongoDatabase db = mongo.getDatabase("mydb");
    MongoCollection<Document> collection = db.getCollection("test");
    try {
        collection.insertOne(new Document("date", new Timestamp(new Date().getTime())));
        assertEquals(Timestamp.class, collection.find().first().get("date").getClass());
    } finally {
        collection.drop();
        mongo.close();
    }
}
@测试
public void testTimestamp(){
地图>();
replacements.put(BsonType.DATE\u TIME,Timestamp.class);
BsonTypeClassMap BsonTypeClassMap=新的BsonTypeClassMap(替换);
DocumentCodeProvider DocumentCodeProvider=
新的DocumentCodeProvider(bsonTypeClassMap);
CodecRegistry CodecRegistry=CodecRegistries.fromRegistries(
CodecRegistries.fromCodecs(
新的TimestampCodec()),
CodeRegistries.fromProviders(documentCodecProvider),
MongoClient.getDefaultCodecRegistry());
Builder options Builder=new MongoClientOptions.Builder();
optionsBuilder.codecRegistry(codecRegistry);
MongoClientOptions=optionsBuilder.build();
MongoClient mongo=新的MongoClient(新服务器地址(),选项);
MongoDatabase db=mongo.getDatabase(“mydb”);
MongoCollection collection=db.getCollection(“测试”);
试一试{
collection.insertOne(新文档(“日期”),新时间戳(新日期().getTime());
assertEquals(Timestamp.class,collection.find().first().get(“date”).getClass());
}最后{
collection.drop();
mongo.close();
}
}

From:

您需要一个编解码器来序列化BSON序列化方法未提供的类型。从一个简单的例子开始。你解决了吗?谢谢,我看到了。