Ломбок, Спринг Монгодб и Джексон Конструктор - PullRequest
0 голосов
/ 06 сентября 2018

Я использую 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;
    // ...
}

Теперь, если я использую Джексона ObjectMapper для создания моего ElementEntity, я получаю следующую ошибку времени выполнения:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: невозможно создать экземпляр ElementEntity (без создателей, как по умолчанию создать, существует): не может десериализовать из значения объекта (без делегата- или создатель на основе собственности)

Но если я добавлю @NoArgsConstructor из lombok, я получу следующую ошибку компиляции:

[ОШИБКА] ElementEntity.java:[11,1] конструктор ElementEntity () является уже определено в классе ElementEntity

Кажется, @Document добавляет один, но, вероятно, только с видимостью пакета. Есть ли простой способ решить эту проблему, или я должен вручную добавить открытый конструктор без аргументов к каждому @Document?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Это ошибка в ломбоке 1.16.22, попробуйте обновить до 1.18.0,

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

Чтение

0 голосов
/ 06 сентября 2018

Попробуйте изменить определение поля id на это:

@Id
@Getter
@Setter
private String id;
...