2017-07-11 14 views
1

私はSpring BootでJPA Repositoryの使用を理解しようとしていました。春のCrudRepository JPAリポジトリ

私はCountryEntitycharとして主キーを持っている、ので、次のDAO

@Repository 
public interface CountryManipulationDAO extends CrudRepository<CountryEntity, Long>{ 

    @Query("Select a from CountryEntity a") 
    public List<CountryEntity> listCountries(); 

とリスト操作を実行することができました。私は春・データで

おかげ

+1

CrudRepository をCrudRepository に変更します。 CrudRepositoryテンプレートの2番目のパラメータはidの型を参照してください – Afridi

+0

私は 'Long'の使い方を知りたいです。 'Character'に変更すると自分の知識が広がらない – Ankit

+1

' findOne(ID) '、' exists(ID) 'や' delete(ID) 'のような一般的なタイプのIDを使う操作を使うと、 (ID) ' –

答えて

2

Repositoryインタフェースは、2つのジェネリック型パラメータを取りDAOクラスでLongの使用について混乱していました。管理するドメインクラスとドメインクラスのIDタイプ。

したがって、2番目のtypeパラメータは、主キーのタイプを表します。

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> { 
    <S extends T> S save(S entity); 
    T findOne(ID primaryKey); 
    Iterable<T> findAll(); 
    Long count(); 
    void delete(T entity);                         
    boolean exists(ID primaryKey);  
} 

エンティティのIDを使用しない関数を呼び出すと、型の一致は行われず、問題は発生しません。あなたの場合のように。

findOne(ID)exists(ID)delete(ID)findAll(Iterable<ID>)のようなIDを使用する操作を使用した場合一方、あなたが問題に実行されます。

リポジトリの詳細については、ドキュメントhereを参照してください。

関連する問題