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 Java 驱动程序不支持 OffsetDate 和 OffsetDateTime。
您需要创建一个 Codec 和一个 CodecProvider 来支持它们,Quarkus 会自动检测它们并将其添加到客户端:https://quarkus.io/guides/mongodb#simplifying-mongodb-client-usage-using-bson-编解码器