2016-05-31 6 views
0

Alle meine Repositories erweitern commonService Repository die im Gegenzug erweitern JpaRepository und JpaSpecificationÄrger mit Feder JPA Daten nativen SQL-Abfrage

public interface CommonReadRepository<T> 
     extends JpaRepository<T, Long>, JpaSpecificationExecutor<T> { 

i nativen SQL-Abfrage in CommonReadRepository wie definieren möchten: Mysql: select * from Tischlimit 1,20;

@Query (value = "select * from? 1 Limit? 2? 3", nativeQuery = true)

List<?> customFindQuery(String tableName,int offset,int limit); 

aber ich SqlGrammerException empfangen und leider, ich nicht viel finden über Syntax in der Dokumentation.

Ich weiß, wenn ich die Abfragen in Repositories definieren kann, dann kenne ich den Tabellennamen, aber ist es möglich, es generisch zu machen?

Dank

+0

vielleicht, wenn Sie die vollständigen Stack-Trace schreiben dann gäbe es weitere Informationen tatsächlich zu kommentieren. Mehr wie eine MySQL-Ausnahme ... –

Antwort

1

Basis Repository Abschnitt in Daten Feder reference

definiert

folgen Sie den in der Referenz definierten Richtlinien wie folgt aus:

@NoRepositoryBean 
interface CommonReadRepository<T, ID extends Serializable> extends JpaRepository<T, ID> { 

    List<T> custonFindQuery(); 
} 
@Repository 
interface UserRepository extends CommonReadRepository<User, Long> { 
    User findByEmailAddress(EmailAddress emailAddress); 
} 

Für Ihre spezifische Anfrage List<?> customFindQuery(String tableName,int offset,int limit);

seine bereits Unterstützung in JpaRepository durch Aufruf der Methode:

Page<T> findAll(Pageable pageable) 

Zum Beispiel:

Page<User> all = userRepository .findAll(new PageRequest(3, 10)); 

wo offest = 30 (3 x 10) und limit = 10