2017-07-11 7 views
1

Ich habe versucht, die Verwendung von JPA Repository in Spring Boot zu verstehen.CrudRepository im Frühjahr JPA Repository

konnte ich die Liste Operation auszuführen mit folgenden DAO

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

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

Da CountryEntity Primärschlüssel als char haben. Ich war über den Gebrauch von Long in DAO Klasse

+1

Ändern Sie CrudRepository zu CrudRepository . Der zweite Parameter in der CrudRepository-Vorlage bezieht sich auf den ID-Typ – Afridi

+0

Ich möchte die Verwendung von 'Long' kennen. Ändern Sie es in "Zeichen" erweitert mein Wissen nicht – Ankit

+1

Höchstwahrscheinlich werden Sie nur ein Problem auftreten, wenn Sie eine Operation verwenden, die den generischen Typ der ID wie 'findOne (ID)', 'exists (ID)' oder 'delete verwendet (ID) ' –

Antwort

2

Die Repository Schnittstelle im Frühjahr-Daten nimmt zwei generische Typparameter

Dank verwirrt; die zu verwaltende Domänenklasse sowie den ID-Typ der Domänenklasse.

Also der zweite Typ Parameter repräsentiert den Typ des Primärschlüssels.

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);  
} 

Wenn Sie eine Funktion aufrufen, die nicht die ID des Unternehmens nicht verwendet, wird keine Typanpassung vorgenommen werden, und Sie werden nicht in Probleme laufen. Wie in deinem Fall.

Auf der anderen Seite, werden Sie auf Probleme stoßen, wenn die Operationen verwenden, die die ID wie findOne(ID), verwenden exists(ID), delete(ID) und findAll(Iterable<ID>).

Weitere Informationen zu Repositories finden Sie in der Dokumentation here.

Verwandte Themen