Lombok、Spring mongodb 和 jackson 构造函数问题

我在我的项目中使用 Spring Boot 和 lombok 并遇到了一些问题。我的课是这样的:


import org.springframework.data.annotation.Id;

import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Data;


@Data

@Document(collection = "elements")

public class ElementEntity {


    @Id

    private String id;

    // ...

}

现在,如果我使用 jackson ObjectMapper 创建我的 ElementEntity,我会收到以下运行时错误:


com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例ElementEntity(无创建者,如默认构造,存在):无法从对象值反序列化(无基于委托或属性的创建者)


但是如果我添加@NoArgsConstructor来自 lombok 的我得到以下编译错误:


[错误] ElementEntity.java:[11,1] 构造函数 ElementEntity() 已在类 ElementEntity 中定义


它似乎@Document增加了一个,但可能只有包可见性。有没有简单的方法来解决这个问题,或者我必须手动添加一个 public no args 构造函数到 each @Document?


函数式编程
浏览 118回答 2
2回答

婷婷同学_

它是 lombok 1.16.22 中的一个错误,尝试升级到 1.18.0,<dependency>&nbsp; &nbsp; <groupId>org.projectlombok</groupId>&nbsp; &nbsp; <artifactId>lombok</artifactId>&nbsp; &nbsp; <version>1.18.0</version>&nbsp; &nbsp; <scope>provided</scope></dependency>

慕尼黑的夜晚无繁华

尝试将 id 字段定义更改为:@Id@Getter@Setterprivate String id;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java