2014-09-03 2 views
1

Я следую за этот учебником о доступе к данным: http://spring.io/guides/gs/accessing-data-rest/SpringData: Как карта AngularJS-страница с @RepositoryRestResource?

Итак, у меня есть такая структура

http://i.stack.imgur.com/wUnrx.png

"Проект" является моделью

package Serveur; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

@Entity 
public class Project { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    private String name; 
    private String mail; 
    private String password; 

    public long getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getMail() { 
     return mail; 
    } 

    public void setMail(String mail) { 
     this.mail = mail; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 
} 

И интерфейс "ProjectRepository" , который реализован непосредственно аннотацией @RepositoryRestResource

упаковка Serveur;

import java.util.List; 

import org.springframework.data.repository.CrudRepository; 
import org.springframework.data.repository.PagingAndSortingRepository; 
import org.springframework.data.repository.query.Param; 
import org.springframework.data.rest.core.annotation.RepositoryRestResource; 

@RepositoryRestResource(collectionResourceRel = "jsonProjects", path = "jsonProjects") 
public interface ProjectRepository extends CrudRepository<Project, Integer> { 

    List<Project> findById(@Param("name") String name); 

} 

«Домашний контроллер» содержит @RequestMapping аннотацию и перенаправляет пользователя на «индекс» страницы:

package Serveur; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class HomeController { 
    @RequestMapping("/") 
    public String index() 
    { 
     return "index"; 
    } 
} 

Но, когда я подключаю на локальный: 8080 /, индекс страницы не но это:

{ 
    _links: { 
    jsonProjects: { 
     href: "http://localhost:8080/jsonProjects{?page,size,sort}", 
     templated: true 
    } 
    } 
} 

ответ

0

Проблема в том, что аннотация @RepositoryRestResource привязывается к «/». Чтобы устранить проблему, редактировать Application.java и добавить эту функцию:

@Override 
     protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 
     super.configureRepositoryRestConfiguration(config); 
     try { 
      config.setBaseUri(new URI("/api")); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 
     } 

Ваш HomeController не будет связываться с «/» и ваш API будет доступен на «/ апи»

0

Вот ответ:

По умолчанию вся функция поиска в Репозитории появляется после ключевого слова поиска. Так что в вашем случае URL будет что-то вроде:
http://localhost:PORT/APP/jsonProjects/search/findById?name=NAME

Смотрите мой рабочий пример и блог для тех же:
http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html
https://github.com/svermaji/Spring-boot-with-hibernate-no-controller

Надеется, что это помогает.

Смежные вопросы