无法使用排序功能进行分页,因为我的变量在蛇形情况下[Spring-boot]

问题描述 投票:0回答:1

我正在尝试在我的项目中实现分页。如果我使用pageOffset和pageSize对结果进行分页,则分页工作正常。但是当我尝试使用排序功能时,它无法处理数据并抛出

org.springframework.data.mapping.PropertyReferenceException:找不到类型为InstituteSmsAllocationHistory的属性请求!

我试图通过多种方式更改变量名称,发现如果我将名称保留为“ request id”,则错误将变为

org.springframework.data.mapping.PropertyReferenceException:未找到类型为InstituteSmsAllocationHistory的属性请求ID!您是说'request_id'吗?

但是我不知道如何使它理解我希望它按request_id排序

我不想将我的项目的结构从蛇案更改为骆驼案。

请在下面找到我的代码:InstituteSmsAllocationHistory.java(实体)

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;
    }

请让我知道是否需要其他。

谢谢!

spring-boot spring-mvc jpa spring-data-jpa spring-data
1个回答
0
投票
如果要使蛇形字母大写成为列名的默认值,只需使用适当的naming strategy(蛇形字母大写[为默认BTW)。我强烈建议您使用常规的Java命名约定,否则以后可能会遇到麻烦。

关于排序,如果其他所有方法均失败,请尝试使用JpaSort.unsafe(sortBy)。请记住,在这种情况下,Spring Data不会验证该属性的存在-拼写错误的属性仅在尝试查询时由基础DB识别。

© www.soinside.com 2019 - 2024. All rights reserved.