如果 Java 类型为 OffsetDateTime,Quarkus MongoDB 将返回日期 1970

问题描述 投票:0回答:1

MongoDB 验证架构:

bsonType: "object",
required: ["createdAt"],
properties: {
    createdAt: {
        bsonType: "date"
    }
}

Java 类:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@MongoEntity(collection = "dogs")
public class Dog {
  private OffsetDateTime createdAt;
}

Java对象创建:

var dog = new Dog();
dog.setCreatedAt(OffsetDateTime.now());

插入文档:

mongoDatabase.getCollection("dogs", Dog.class).insertOne(dog);

检索文档:

var dog = col.find().into(new ArrayList<>()).get(0);
System.out.println(dog.getCreatedAt()); //1970-01-20T21:13:08.290+01:00
System.out.println(OffsetDateTime.now()); //2024-04-29T12:58:10.168902949+02:00

数据库中设置了 1970 年日期。

MongoDB 支持 OffsetDateTime 吗?是否缺少以正确格式插入日期的内容?

mongodb mongodb-java
1个回答
1
投票

MongoDB Java 驱动程序不支持 OffsetDate 和 OffsetDateTime。

您需要创建一个 Codec 和一个 CodecProvider 来支持它们,Quarkus 会自动检测它们并将其添加到客户端:https://quarkus.io/guides/mongodb#simplifying-mongodb-client-usage-using-bson-编解码器

© www.soinside.com 2019 - 2024. All rights reserved.