原因:org.bson.codecs.configuration.codecConfigurationException:找不到java.time.LocalDateTime类的编解码器。
使用下面的代码
@SpringBootApplication
public class MongojavatimeApplication implements CommandLineRunner {
@Autowired
private MongoTemplate template;
public static void main(String[] args) {
SpringApplication.run(MongojavatimeApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Criteria c = Criteria.where("createdDate").gt(LocalDateTime.now().minusDays(30));
template.aggregate(Aggregation.newAggregation(Aggregation.match(c)), "TestJavaTime", TestJavaTime.class);
}
}
您将在这里找到很少的测试,LocalDateTime可以很好地使用Spring存储库,这是使用MongoTemplate使用Criteria API的经典查询,但在创建聚合查询时会引发此错误。https://github.com/farael49/spring-mongo-aggrege-localdateTime
如果要直接使用LocalDateTime
,则应提供如下所示的编解码器:
public enum LocalDateTimeCodec
implements Codec<LocalDateTime> {
INSTANCE;
@Override
public void encode(
BsonWriter writer,
LocalDateTime value,
EncoderContext encoderContext) {
writer.writeDateTime(
value.toInstant(ZoneOffset.UTC)
.toEpochMilli()
);
}
@Override
public LocalDateTime decode(
BsonReader reader,
DecoderContext decoderContext) {
return Instant.ofEpochMilli(reader.readDateTime())
.atOffset(ZoneOffset.UTC)
.toLocalDateTime();
}
@Override
public Class<LocalDateTime> getEncoderClass() {
return LocalDateTime.class;
}
}
您可以通过以下方式注册:
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
CodecRegistry registry = CodecRegistries.fromRegistries(
CodecRegistries.fromCodecs(LocalDateTimeCodec.INSTANCE),
MongoClient.getDefaultCodecRegistry()
);
MongoClientOptions options = MongoClientOptions
.builder()
.codecRegistry(registry)
.build();
return new SimpleMongoDbFactory(new MongoClient(host, options), dbName);
}
其中host
和dbname
可能是某个配置类的autowired字段。
我想获取已批准、已审查和真实记录即。 以下 MONGO 聚合查询返回正确的结果 如何在Springmongo数据db中实现上述查询?Spring Project操作与ArrayOperators.Filter.filter不提供链接操作做和另一个条件。
统计 BuguDao提供如下常用的统计功能,它们都是基于Aggregation实现的。 /* 求最大值 */ public double max(String key) public double max(String key, BuguQuery query) /* 求最小值 */ public double min(String key) public double min(Stri
我在读一篇关于OOP中的关系、关联、组合、聚合等的文章。有些事情令人困惑 因此,在PHP中,我们调用以下代码组合 在阅读了几篇关于作文的文章后 以下是组成示例: 因此,根据我的理解,聚合意味着A类的对象可以存在于B类之外,而组合意味着A类生命周期的对象取决于B类。 我正确理解了吗?
问题内容: 我很难理解UML中的组合和聚合之间的区别。有人可以给我一个很好的比较和对比吗?我也很想学习识别代码之间的区别和/或看一个简短的软件/代码示例。 编辑:我问的部分原因是因为我们在工作中正在进行反向文档活动。我们已经编写了代码,但是我们需要返回并为代码创建类图。我们只想正确捕获关联。 问题答案: 聚集与构成之间的区别取决于上下文。 以另一个答案中提到的汽车示例为例-是的,确实汽车尾气可以“
问题内容: 我试图理解这些术语的含义。我举了一些例子,例如: 汇总:Facebook 有一个 用户 组成:facebook 中的 每个用户 都有一个 会话。 协会:人们 使用 浏览器 但是我对 具有 和 使用我的 示例感到困惑。为什么不能是用户 使用 Facebook帐户或Facebook 使用 会话来认证用户? 就OOP而言,这是错误的吗?我在哪里想念这个概念? 问题答案: 该 使用 关系意味着
我在UML中遇到了和关系的一些问题,我确实理解整体/部分关系,所以如果一个类不能没有它的整体而存在,那么它就成为一个强的组合关系,如果它仍然可以没有它的整体而存在,那么它就成为一个弱的聚合关系。 然而,当处理真正的软件需求时,有时会变得更加棘手。我有一个下面的类图,包括所有必要的属性、操作和特性,它们都正确地显示在UML标准中,但是我不确定我的关系: 1 接口和 6 类 有人可以确认我的关系是否正