2017-09-29 11 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();             
} 

:JAVA interface、あなたは静的なメソッドを定義しようとしたとき、あなたはそれをメソッド本体を与える必要がありますが、ここで私はあなたが何をすべき唯一のことは、あなたの方法からstaticを削除だと思うで

+0

スポーツクラス定義を投稿できますか? – inafalcao

+0

これはスポーツのエンティティクラスが知っていることを意味しますか? @inafalcao –

+0

はい。私はスポーツクラスの属性を見たいと思う。 – inafalcao

答えて

0

また、アクセス修飾子publicはここでも必要ではありません。なぜなら、インタフェースでメソッドを定義するときにjavaがデフォルトでpublicとなるからです。

注:私はあなたがtruenativeQueryが割り当てられていることに気づい、あなたがGET_PlayersあるSQL、ないJQLを確認する必要があります。

+0

ありがとうございます。 GET_Playersの確認方法は? –

+0

@ M.David sqlは、テーブル名または列名が実際のデータベースのものであり、エンティティ名またはエンティティフィールド名ではないことを意味します。 – Blank

+0

Noted @Forward。どのように上記のコードのテストメソッドを実装するには? –