2017-01-30 162 views
1

我在項目中使用了Spring JPA DATA。我想讓我的數據頁面。我已經將Pageable添加到我的存儲庫方法中。但它顯示類似這樣的錯誤:Spring Jpa Data Page PageRequest

請求處理失敗;嵌套的異常是 java.lang.IllegalArgumentException:您必須提供至少一個 屬性進行排序! java.lang.IllegalArgumentException:你必須 提供至少一個屬性來排序! org.springframework.data.domain.Sort。 <init>(Sort.java:92) org.springframework.data.domain.Sort。 <init>(Sort.java:80) org.springframework.data.domain.PageRequest。 <初始化>(PageRequest.java:52) com.datum.fnd.controller.rest.NodeRestController.getNodes(NodeRestController.java:44) sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法).....

我想與你分享我的代碼。請看下面的代碼。我已經找不到在哪裏我沒有弄錯

我@Repository類:

@Query(value = "select new com.datum.fnd.domain.Node(c.idNode, c.name,c.address, c.description, c.point) from Node c") 
List<Node> getNodesByPage(Pageable pageable); 

我的服務類:

public interface NodeService extends DefaultService<Node, Long> { 
    List<Node> getUnboundedNodes(); 

    List<Node> getNodes(Pageable pageable); 
} 

我ServiceImpl類:

@Service 
public class NodeServiceImpl implements NodeService { 

private static final Logger LOG = Logger.getLogger(NodeServiceImpl.class); 

@Autowired 
private NodeRepository nodeRepository; 

@Autowired 
private ChannelNodeRepository channelNodeRepository; 

@Override 
public Node create(Node node) { 
    return nodeRepository.save(node); 
} 


@Transactional(readOnly = true) 
@Override 
public List<Node> list() { 
    return nodeRepository.selectAll(); 
} 

@Transactional(readOnly = true) 
@Override 
public List<Node> getNodes(Pageable pageable) { 
    return nodeRepository.getNodesByPage(pageable); 
} 

我的控制器類:

@RequestMapping(value = "/page/{last_item}", method = RequestMethod.GET) 
public List<Node> getNodes(@PathVariable(value = "last_item") int last_item) { 
    LOG.info("Retrieve all nodes"); 

    PageRequest page_req = new PageRequest(0, last_item, Direction.DESC); 
    return nodeService.getNodes(page_req); 
} 

,當我嘗試叫「http://localhost:8088/FNDWEB/rest/node/page/50」它顯示了上述錯誤。

+0

您使用的PageRequest構造似乎需要第四個非空參數http://docs.spring.io/autorepo/docs/spring-data-commons/ 1.13.0.M1/api/org/springframework/data/domain/PageRequest.html#PageRequest-int-int-org.springframework.data.domain.Sort.Direction-java.lang.String ...- – RubioRic

+0

當我從我的PageRequest中刪除「Direction.DESC」它的作品 –

回答

2

異常消息和documentation of PageRequest應該使您的問題清楚。如果您提供Sort.DirectionPageRequest構造函數,則還必須至少提供一個屬性名稱(根據應對哪些實體進行排序)。

例如:

PageRequest page_req = new PageRequest(0, last_item, Direction.DESC, "idNode");