micronaut react-mongo设置内部服务器错误

时间:2019-06-27 20:56:51

标签: java mongodb micronaut

我正在尝试在基于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);
    }

我知道设置中有什么问题还是需要更多信息吗?

寻求帮助

1 个答案:

答案 0 :(得分:0)

您的压缩器应该用@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;
    }

   ....

}