Spring использует Json и возвращаемое значение с помощью Hibernate - PullRequest
0 голосов
/ 05 октября 2018

У меня есть таблица Customers и 2 столбца customer_id и customer_name.Я хочу отправить запрос списка идентификаторов с помощью json и вернуть соответствующие имена клиентов.Но я не смог обработать объекты dto и архитектуру службы контроллера.

input dto:

public class CustomerSearchDto extends BaseDto {
    @ApiModelProperty(
            example = "1",
            value = "Customer Id",
            required = true,
            dataType = "Long"
    )
    private Long id;
}

outputdto:

public class CustomerDto extends BaseDto {

    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Класс контроллера:

@ApiOperation(
            value = "Return Customer",
            response = Customer.class
    )
    @PostMapping(value = Endpoint.RRESOURCE_CUSTOMER_GROUP_BY_ID)
    public ResponseEntity<CustomerDto> getCustomersById(@RequestBody @Validated CustomerSearchDto CustomerSearchDto) {
        CustomerDto CustomerDto = new CustomerDto;
        List<CustomerDto> CustomerDtoList = CustomerService.findCustomerByIds(ids);
        return ResponseEntity.ok(CustomerDto);
    }

Метод класса обслуживания:

@Transactional
    public List<CustomerDto> findCustomerByIds(List<Long> customerIds) {
        List<Customer> customerList = repository.findCustomerById(CustomerIds);
        return mapper.mapAsList(CustomerList, CustomerDto.class);
    }

В классе контроллера есть некоторые ошибки.И также я не уверен в том, что я должен определить как для ввода, так и для вывода различных классов dto?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Прежде всего кажется, что вы должны использовать CrudRepository#findAll(java.lang.Iterable<ID>) для поиска ваших сущностей по нескольким идентификаторам.

Также в вашем конкретном случае избыточно создавать отдельный CustomerSearchDto в качестве держателя для id- лучше просто работать с long с.

Так что просто передайте List<Long> ids в качестве параметра в вашем контроллере (не забудьте аннотировать этот параметр как @RequestBody или @RequestParam в зависимости от того, где вы находитесьхотите указать эти идентификаторы (в URL или в теле) и вызвать CrudRepository#findAll(ids) из класса обслуживания.

0 голосов
/ 05 октября 2018

Вам не нужно определять отдельные входные и выходные классы, вместо этого вы можете построить и вернуть карту или список в соответствии с вашим вариантом использования.Также для ввода вы можете принять список, который будет содержать список идентификаторов клиентов, которых вы хотели бы получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...