Не удается сопоставить объект JSON из Couchbase с объектом DTO с помощью Spring Data Couchbase - PullRequest
1 голос
/ 26 мая 2020

Я создал несколько объектов модели данных для вставки и чтения из Couchbase. Он имеет простые типы, а 2 поля - это другие объекты DTO.

@Data
@AllArgsConstructor
@Document
public class Customer {

    @Id
    private int id;

    private String fullName;

    private String phoneNumber;

    private String address;

    private Date registrationDate;

    private boolean isBusiness;

    private String status;

    private Tariff currentTariff;

    private BillingAccount billingAccount;
}

Итак, я создал и конечную точку с logi c для создания 10000 случайных объектов клиента, затем он выполняет repository.saveAll (customers);

Я вижу эти данные добавлено в Couchbase UI

Но затем Я хочу получить все эти объекты клиентов из Couchbase . Вот мой код

    @GetMapping("/findAllCustomers")
    public Iterable<Customer> getAll() {
        return repository.findAll();
    }

Очень просто, без специального преобразования и других сложных вещей. Тип, которого я ожидаю, - это именно тот тип, который я создавал и с помощью которого сохранял.

Я получаю следующую ошибку:

Не удалось создать экземпляр com.bachelor.boostr.model.Customer, использующий конструктор publi c com.bachelor.boostr.model.Customer

Вызвано: java .lang.ClassCastException: java .lang.String не может быть приведено к java .lang.Integer \ r \ n \ tat com.bachelor.boostr.model.Customer_Instantiator_z47nsm.newInstance (Неизвестный источник) \ r \ n \ tat org.springframework.data.convert.ClassGeneratingEntityInstantiatorAdapterInstantiator $ EntityInstantiator ClassGeneratingEntityInstantiator. java: 226) \ r \ n \ t ...

Пожалуйста, помогите

1 Ответ

1 голос
/ 26 мая 2020

Я удалил аннотацию @AllArgsConstructor Lombok и создал конструктор без поля Id.

@Data
@Document
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationStrategy.UNIQUE)
    private String id;

    private String fullName;

    private String phoneNumber;

    private String address;

    private Date registrationDate;

    private boolean isBusiness;

    private String status;

    private Tariff currentTariff;

    private BillingAccount billingAccount;

    public Customer(String fullName, String phoneNumber, String address, Date registrationDate, boolean isBusiness, String status, Tariff currentTariff, BillingAccount billingAccount) {
        this.fullName = fullName;
        this.phoneNumber = phoneNumber;
        this.address = address;
        this.registrationDate = registrationDate;
        this.isBusiness = isBusiness;
        this.status = status;
        this.currentTariff = currentTariff;
        this.billingAccount = billingAccount;
    }
}

После этого он работал нормально. Операции чтения и записи.

...