2016-11-21 5 views
0

У меня проблема с Spring boot. Я создал объект и репозиторий, но метод findByName в репозитории не работает. Мой адрес:findByName не работает [Spring boot]

http://localhost:8080/student/search/findByName?name=Artem В Google chrome: localhost не найден, но поиск сопоставлен.

Entity:

@Getter @Setter 
@Entity @Table(name = "Student") 

public class Student extends BaseEntity{ 
    private String name; 
    private String dateOfBirthDay; 
    private String sex; 
    private String phoneNumber; 
} 

BaseEntity:

@Getter 
@Setter 
@MappedSuperclass 
public class BaseEntity { 
    @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) @Column protected Long id; 

Мой Repository:

@RepositoryRestResource(collectionResourceRel = "student", path = "student") 
public interface StudentRepository extends PagingAndSortingRepository<Student, Long> { 
    Student findByName(@Param("name") String name); 
} 

Применение:

@SpringBootApplication 
@EnableTransactionManagement 

public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Application.yaml:

spring: 
    application: 
     name: students 
    datasource: 
     driverClassName: org.postgresql.Driver 
     url: jdbc:postgresql://localhost:5432/students 
     username: postgres 
     password: postgres 
    jpa: 
     hibernate: 
     ddl-auto: update 
server: 
    port: 8080 
+0

@javaguy Читайте о RepositoryRestResource, это работает как контроллер. – Mello007

ответ

0

Я рекомендую вам создать класс ресурсов, работает как контроллер. Вот простой пример:

@RestController 
@RequestMapping("/yourPath") //students, whatever 
public class StudentsResource { 

@Autowired 
private StudentRepository studentRepository; 

//type media that you want to show (json, xml...in this case is JSON) 
@RequestMapping(method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE }) 

// <Student> is the entity, object 
@RequestMapping(value = "/yourPath/{studentName}") 
public ResponseEntity<Student> findByName(@pathVariable("studentName") String name) { 
    Student student = studentRepository.findByName(name); 

    if(student == null){ 
    //handler your own exception here 
    } 

    //show the student as json object 
    return ResponseEntity.status(HttpStatus.OK).body(student); 
} 

Примечание: это класс ресурса. Но ваша проблема связана с локальным хостом, поэтому, если вы используете Spring Boot, проверьте, правильны ли ваши «application.properties». Вот мой пример:

spring.datasource.url=jdbc:mysql://localhost:3306/yourDataBase 
spring.datasource.username=yourUser 
spring.datasource.password=yourPassword 

spring.jpa.hibernate.ddl-auto=update //makes the spring create the database automatic! 
Смежные вопросы