我正在尝试在我的项目中实现分页。如果我使用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;
}
请让我知道是否需要其他。
谢谢!
关于排序,如果其他所有方法均失败,请尝试使用JpaSort.unsafe(sortBy)
。请记住,在这种情况下,Spring Data不会验证该属性的存在-拼写错误的属性仅在尝试查询时由基础DB识别。