java - micronaut 反应式 mongo 设置内部服务器错误
问题描述
我正在尝试在基于 java 的 micronaut 项目中设置 mongo 反应式客户端,但出现以下错误:
“内部服务器错误:使用 AutomaticPojoCodec 解码时发生异常。\n解码为“成员”失败,出现以下异常:\n\n找不到“成员”的公共构造函数。\n\n可能需要自定义编解码器或 PojoCodec明确配置和注册来处理这种类型。”
我的项目设置如下:
├── Application.java
├── config
│ └── MongoConfiguration.java
├── controller
│ └── MemberController.java
├── model
│ └── Member.java
└── service
└── MemberService.java
该应用程序正在启动,但如果我调用 http 端点来列出所有成员,它会抛出一个错误,如帖子中所列。
我的会员一开始看起来很简单:
import com.fasterxml.jackson.annotation.JsonProperty;
public class Member {
private final String firstname;
private final String lastname;
public Member( @JsonProperty("firstname") String firstname, @JsonProperty("lastname") String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
....
}
// And my service, has this method where I'm calling mongo
private MongoCollection<Member> getCollection() {
configuration.setCollectionName("members");
return mongoClient.getDatabase(configuration.getDatabaseName())
.getCollection(configuration.getCollectionName(), Member.class);
}
我知道设置中有什么问题还是需要更多信息?
谢谢帮助
解决方案
您的 constrictor 应该使用@JsonCreator注释,因为Member
没有默认构造函数并且具有带注释的参数的自定义构造函数@JsonProperty
构造函数/工厂方法,其中每个参数都使用 JsonProperty 或 JacksonInject 进行注释,以指示要绑定到的属性名称
public class Member {
private final String firstname;
private final String lastname;
@JsonCreator
public Member(@JsonProperty("firstname") String firstname,
@JsonProperty("lastname") String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
....
}
推荐阅读
- jquery - 首次加载页面时,Jquery UI 自动完成功能不起作用
- api - 如何通过 Softlayer Rest API 在 IBM 云中获取 VM 风味
- php - 为什么 SQL 查询与变量不匹配
- javascript - 目前是否可以在移动设备上拥有全屏(自动播放)视频背景?
- postgresql - Postgres 不使用日期字段的索引
- json - JsonProtocol NoClassDefFoundError
- java - 如何在表格单元格工具提示上禁用 HTML 的执行?
- r - 重新格式化数据框 R
- spring - Getting the request URL of a SOAP request in handleResponse Method in ClientInterceptor
- css - 如何让我的引导程序将标签与内容对齐成 4 列?