我正在尝试在Java中的Micronaut项目中设置Mongo Reactive客户端,并且我会收到以下错误:
"内部服务器错误:使用该解码时发生异常 自动pojocodec。 以下例外: n ncannot找到一个公共构造函数 "成员"。 n na自定义编解码器或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);
}
我知道设置中有什么问题或需要更多信息?
thx帮助
您的收缩器应用@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;
}
....
}