当前位置: 首页 > 知识库问答 >
问题:

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

壤驷华美
2023-03-14

我在项目中使用SpringBoot和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,则会出现以下运行时错误:

通用域名格式。fasterxml。杰克逊。数据绑定。exc.InvalidDefinitionException:无法构造ElementEntity的实例(不存在与默认构造类似的创建者):无法从对象值反序列化(没有委托或基于属性的创建者)

但是如果我从lombok添加@noargsconstuctor,我会得到以下编译错误:

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

似乎@Document添加了一个,但可能只有包可见性。有没有简单的方法来解决这个问题,或者我必须手动向每个@文档添加一个公共的无参数构造函数?


共有2个答案

商昂然
2023-03-14

尝试将id字段定义更改为:

@Id
@Getter
@Setter
private String id;
范鸿畅
2023-03-14

它是龙目岛1.16.22中的一个错误,尝试升级到1.18.0,

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.0</version>
    <scope>provided</scope>
</dependency>

阅读

 类似资料:
  • 问题内容: 我正在将Lombok项目与Spring Data JPA一起使用。有什么方法可以将Lombok 与JPA默认构造函数连接? 码: 据我所知,JPA需要默认的构造函数,该构造函数被注解覆盖。有什么解决方法吗? 这段代码给我错误: 问题答案: 更新 根据反馈和John的回答,我已更新了不再使用or的答案,而是通过和创建访问器和变量,通过创建默认构造函数via,最后我们创建了构建器通过via

  • @adilooze解决方案

  • 已经给出了所有的DTO@data、@noargsconstructor、@allargsconstructor,所以理想情况下所有的构造函数都应该可用。 我已经尝试用新旧版本的Spring tool suite和更改的lombok jar来构建这个项目。但同样或不同的错误仍在出现。 用STS4和STS 3.9.7尝试,3.9.8同样的问题即将到来。尝试龙目岛1.16.22、1.18.0、1.18.

  • 我使用默认构造函数从子类中设置recordId的值,最初没有使用lombok。最终我决定在这里使用构建器,但现在的问题是lombok构建器在内部覆盖了我的默认构建器,因此从未设置值。

  • 主要的 维京阶层 人类阶级 饮料和小便界面是一样的

  • 问题内容: 我开始学习JAXB,所以我的问题可能很愚蠢。现在我有了类,想要生成XML Schema。在执行此指令后,我得到了异常 IllegalAnnotationExceptions …没有无参数的默认构造函数。 是的 我的课程没有默认的无参数构造函数。太容易了 我有类与包可见的构造函数/ final方法和偏离路线的参数。我应该怎么做-创建一些特定的momemto / builder类或将我的构