@Dima_gogi_ya
Начинающий гений-программист

Почему сервер возвращает в Json'е null вместо объектов?

Есть БД, слой entity, слой dto и непосредственно Rest контроллер.
Когда я дёргаю Get запрос сконвертированный через mapStruct, чтобы вернуть данные клиенту, вместо данных получаю null по всем строкам. Но, если конвертацию в dto убрать, всё работает. Как это вылечить?

Entity
package com.example.demo.model.entity;

import lombok.Data;

import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "client", schema = "schema_bank")
//@Data
public class ClientEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;
    String lastName;
    String firstName;
    String middleName;
    String number;
    String email;
    int passport;


    @OneToMany(mappedBy = "clientEntity", fetch = FetchType.LAZY)
    List<CreditEntity> creditEntityList;
    @OneToOne(cascade = CascadeType.ALL, optional = false)
            @JoinColumn(name = "offer_id")
    OfferEntity offerEntity;
    @ManyToOne(optional = false, cascade = CascadeType.ALL)
            @JoinColumn(name = "bank_id")
    BankEntity bankEntity;


DTO
package com.example.demo.model.DTO;

public class ClientDTO {
    Long id;
    String lastName;
    String firstName;
    String middleName;
    String number;

MAP
package com.example.demo.model.converter.interfacies;

import com.example.demo.model.DTO.ClientDTO;
import com.example.demo.model.entity.ClientEntity;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface ClientMap {

    ClientMap INSTANCE = Mappers.getMapper(ClientMap.class);

    ClientDTO toDto(ClientEntity clientEntity);
    ClientEntity toEntity(ClientDTO clientDTO);

}


сервисный слой (имплементация)
package com.example.demo.service.impl;

import com.example.demo.model.DTO.ClientDTO;
import com.example.demo.model.converter.interfacies.ClientMap;
import com.example.demo.model.entity.ClientEntity;
import com.example.demo.repo.ClientRepo;
import com.example.demo.service.interfacies.ClientService;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class ClientServiceImpl implements ClientService {
    final ClientRepo repo;

    public ClientServiceImpl(ClientRepo repo) {
        this.repo = repo;
    }

    @Override
    public ClientDTO create(ClientDTO clientDTO) {
        ClientEntity create = repo.save(ClientMap.INSTANCE.toEntity(clientDTO));
        return ClientMap.INSTANCE.toDto(create);
    }

    @Override
    public ClientDTO edit(ClientDTO clientDTO) {
        ClientEntity edit = repo.save(ClientMap.INSTANCE.toEntity(clientDTO));
        return ClientMap.INSTANCE.toDto(edit);
    }

    @Override
    public void delete(Long id) {
    repo.deleteById(id);
    }

    @Override
    public List<ClientDTO> findAll() {

       return repo.findAll().stream()
                .map(ClientMap.INSTANCE::toDto)
                .collect(Collectors.toList());

    }
    @Override
    public List<ClientEntity> all() {

        return repo.findAll();

    }
}

контроллер
package com.example.demo.rest;

import com.example.demo.model.DTO.ClientDTO;
import com.example.demo.model.entity.ClientEntity;
import com.example.demo.service.impl.ClientServiceImpl;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/clients")
public class ClientController {
    final ClientServiceImpl service;

    public ClientController(ClientServiceImpl service) {
        this.service = service;
    }

    @PostMapping("/create")
    public ClientDTO create (@RequestBody ClientDTO clientDTO){
        return service.create(clientDTO);
    }
    @PostMapping("/edit")
    public ClientDTO edit (@RequestBody ClientDTO clientDTO){
        return service.edit(clientDTO);
    }
    @DeleteMapping("/delete/{id}")
    public void delete(@PathVariable Long id){
        service.delete(id);
    }
    @GetMapping("/all")
    public List<ClientDTO> getAll(){
        return service.findAll();
    }
    @GetMapping("/alls")
    public List<ClientEntity> all(){
        return service.all();
    }
}


[
    {
        "id": null,
        "lastName": null,
        "firstName": null,
        "middleName": null,
        "number": null,
        "email": null,
        "passport": 0
    }
]


[
    {
        "id": 2,
        "lastName": "volokitin",
        "firstName": "dmitry",
        "middleName": "vitaljevich",
        "number": "1234567890",
        "email": "aa@t.r",
        "passport": 123456,
        "creditEntityList": [],
        "offerEntity": null,
        "bankEntity": null
    }
]
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
@Dima_gogi_ya Автор вопроса
Начинающий гений-программист
Решение:
МапСтракт не работал с Ломбоком. Ломбок удалил, всё заработало)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Но, если конвертацию в dto убрать, всё работает. Как это вылечить?

Значит, что-то не так на этапе конвертации. Проведите дебаг проекта и посмотрите, что не так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы