Невозможно использовать функцию сортировки для разбивки на страницы, поскольку моя переменная в случае змеи [Spring-boot] - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь реализовать нумерацию страниц в своем проекте. нумерация страниц работает нормально, если я делаю нумерацию страниц, используя pageOffset и pageSize. но когда я пытаюсь использовать функцию сортировки, она не может обработать данные и выдает

org.springframework.data.mapping.PropertyReferenceException: не найден запрос свойства для типа InstituteSmsAllocationHistory!

Я попытался изменить имя переменной разными способами и обнаружил, что если я оставлю имя как «идентификатор запроса», ошибка изменится на

org.springframework.data.mapping.PropertyReferenceException:Не найдено идентификатора запроса свойства для типа InstituteSmsAllocationHistory! Вы имели в виду 'request_id'?

, но я не знаю, как заставить его понять, что я хочу отсортировать по request_id

Я не хочу менять структуру моегопроект для верблюжьего дела из змеиного дела.

Пожалуйста, найдите мой код ниже: InstituteSmsAllocationHistory.java (Entity)

package com.proc.admin.rest.model;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.proc.common.entity.AuditableEntity;
import com.proc.common.entity.Institution;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "tab_inst_sms_allocation_hist")
@Getter
@Setter
public class InstituteSmsAllocationHistory extends AuditableEntity<String> implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -4218076388772964964L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int               request_id;
    @JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "institution_id")
    private Institution       institution_id;
    @JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "sms_plan_id")
    private SMSPlanMaster     sms_plan_id;
    private int               sms_quota_allocated;
    private String            quota_type;
    private String            reason;
}

InstituteSmsAllocationHistoryController.java (Controller)

 @GetMapping(value = HISTORY + ALL)
    public ResponseEntity<PageResponseEntity<InstituteSmsAllocationHistory>> getSmsAllocationHistory(@RequestParam(defaultValue = "1") int pageOffset,
            @RequestParam(defaultValue = "10") int pageSize,
            @RequestParam(defaultValue = "request_id") String sortBy) {
        return RestResponseConverterUtil.sucess(smsPlanMasterService.getAllSmsHistory(pageOffset - 1, pageSize, sortBy));
    }

InstituteSmsAllocationHistoryServiceImpl.java (Служба)

 @Override
    public PageResponseEntity<InstituteSmsAllocationHistory> getAllSmsHistory(int pageOffset, int pageSize, String sortBy) {
        Pageable pageable = PageRequest.of(pageOffset, pageSize, Sort.by("request_id"));
        Page<InstituteSmsAllocationHistory> page = instituteSmsAllocationHistoryDao.findAll(pageable);
        PageResponseEntity<InstituteSmsAllocationHistory> pageList = new PageResponseEntity<InstituteSmsAllocationHistory>(page.getContent(), ++pageOffset, pageSize, sortBy, page.getTotalElements());
        return pageList;
    }

Пожалуйста, дайте мне знать, если вам нужно что-то кроме этого.

Спасибо!

1 Ответ

0 голосов
/ 24 октября 2019

Почему вы так называете свою недвижимость?

Если вы хотите сделать случай змеи по умолчанию для имен столбцов, просто используйте соответствующую стратегию именования (случай змеи равен BTW по умолчанию). Я настоятельно рекомендую использовать обычные соглашения об именах Java, иначе вы можете столкнуться с проблемами позже.

Что касается сортировки, если ничего не помогает, попробуйте использовать JpaSort.unsafe(sortBy). Имейте в виду, что Spring Data не будет проверять существование свойства в таком случае - свойство с ошибкой будет распознаваться базовой БД только при попытке запроса.

...