2017-09-29 3 views
0

스포츠 테이블에있는 플레이어 열의 모든 레코드를 검색해야합니다. SportsRepository 방법은 아래와 같습니다.봄 JPA select one column does not work

@SuppressWarnings("unused")         
@Repository                
public interface SportsRepository extends JpaRepository<Sport, Long> { 
    public static final String GET_Players="SELECT players FROM Sport"; 
    @Query(value = GET_Players, nativeQuery = true) 
    public static List<String> getPlayers();             
} 

그런 다음 "gradlew clean test"라고 입력하면됩니다. 그런 다음 "오류 : 메서드 본문 누락 또는 추상 선언"오류가 발생합니다. 왜 그런가요? 시체를 구현해야합니까? 왜냐하면 JPA 쿼리는 이해할 수있는 출력을 제공해야하기 때문입니다. 누구든지 알고 있니?

@SuppressWarnings("unused")         
@Repository                
public interface SportsRepository extends JpaRepository<Sport, Long> { 
    public static final String GET_Players="SELECT players FROM Sport"; 
    @Query(value = GET_Players, nativeQuery = true) 
    public List<String> getPlayers();             
} 

: 자바 interface, 정적 메소드를 정의 할 때, 당신은 그것을 메소드 본문을 제공해야하지만, 여기 당신이해야 할 유일한 것은 당신의 방법에서 static을 제거 생각에서

+0

스포츠 클래스 정의를 게시 할 수 있습니까? – inafalcao

+0

즉, Sport의 엔티티 클래스는 알고 있습니까? @inafalcao –

+0

예. Sport 클래스 속성을보고 싶습니다. – inafalcao

답변

0

또한 액세스 수정 자 public은 여기서도 필요하지 않습니다. java가 인터페이스에서 메소드를 정의 할 때 기본값으로 public을 취하기 때문입니다.

참고 : 나는 당신이 truenativeQuery를 할당 것으로 나타났습니다, 당신은 GET_Players입니다 SQL이 아닌 JQL을 확인해야합니다.

+0

고마워요. GET_Players를 확인하는 방법은 sql입니까? –

+0

@ M.David sql은 테이블 또는 열 이름이 실제 데이터베이스의 이름이고 엔티티 이름이나 엔티티 필드 이름이 아님을 의미합니다. – Blank

+0

Noted @Forward. 위의 코드에 대한 테스트 메소드를 구현하는 방법은 무엇입니까? –