2016-05-03 4 views
0

Ich bin neu bei SpringData und ich verstehe nicht, was hier passiert. Ich habe eine Schnittstelle geschaffen, die PagingAndSortingRepository und overrided die findAll() -Methode wie folgt erweitert:SpringData findAll verarbeitet alle Datenbanktabellen und nicht die angeforderte

@Override 
@Query 
List<MyEntity> findAll(); 

Ich rufe diese Methode in meinem Dienst, aber es macht meine app Caused by: java.lang.StackOverflowError eine Ausnahme zu werfen, denn das Verfahren ist das Lesen durch die gesamte Datenbank, nicht nur von MyEntity Tabelle in der Datenbank. Irgendeine Idee?

+0

Aktivieren Sie die Protokollierung für EclipseLink und zeigen Sie Ihre Entität an. Es könnte ein komplexes Objektdiagramm mit Beziehungen sein, die eifrig abgerufen werden und den Provider zwingen, alle referenzierten Entitäten in Ihrem Objektmodell einzubinden. – Chris

Antwort

0

Offenbar liegt das Problem in der Konfiguration von EclipseLink. In persistence.xml habe ich diese Zeile <shared-cache-mode>NONE</shared-cache-mode> hinzugefügt und jetzt funktioniert es wie es sollte.

0

keine Notwendigkeit zu überschreiben getall() method.in Ihrem Dienst autowired, dass Dao oder Repository-Klasse und mit diesem können Sie direkt die findall() -Methode aufrufen. für den Fall, dass Sie Ihre benutzerdefinierte Methode abgesehen von dem, was durch Spring-Daten jpa geschrieben werden soll, dann verwenden wir die @Query, um benutzerdefinierte Abfrage zu schreiben.

+0

Vielen Dank für die Antwort, aber ich fragte etwas anderes :) –

+0

Willkommen @AlbanoVito –

0
No Need to Override. What i have done is i have created a repository i.e 
FavoriteRepository which is extending JpaRepository and i have mentioned the 
dbmodel name (Favorite) 

like this JpaRepository<Favorite, Long> // Here Favorite is my model name 
and Long is the type of primary key mentioned in db model Favorite as @Id 

@Repository 
public interface FavoriteRepository extends JpaRepository<Favorite, Long>{ 

} 

Now you can use method findOne or findAll. As these methods are present in 
Jparepository.Hope so it will help 

If you want to add new method then use @Query with JpQL 
@Query(value = "select f from Favorite f where f.userId=:userId ") 
public List<Favorite> getFavoritesForUser(@Param("userId") String userId);