2017-01-30 7 views
1

Я использую Spring JPA DATA в своем проекте. Я хочу сделать свои данные доступными. Я уже добавляю Pageable к моему методу репозитория. Но он показывает ошибку примерно так:Spring Jpa Data, Pageable, 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. <INIT> (PageRequest.java:52) com.datum.fnd.controller.rest.NodeRestController.getNodes (NodeRestController.java:44) sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) .....

Я хочу поделиться своими кодами с вами. Пожалуйста, просмотрите следующие коды. Я не нашел, где я ошибаюсь

Мой @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); 
} 

класс My Controller:

@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

Когда я удалить «Direction.DESC» из моего PageRequest, он работает –

ответ

2

Сообщение об исключении и documentation of PageRequest должно сделать вашу проблему понятной. Если вы создаете конструктор Sort.Direction до PageRequest, вы должны указать также как минимум одно имя свойства (в соответствии с которым объекты должны быть отсортированы).

Например:

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