2016-06-30 8 views
0

Ich habe eine Spring Data JPA-Repository mit einer benutzerdefinierten Methode:Ändern Argumentwert mit dem Spring Data JPA Repository

@Repository 
public interface EntityRepository extends PagingAndSortingRepository<Entity, Long> { 
    List<Entity> findByNameIgnoreCase(String name); 
} 

Und ich möchte irgendwie ändern die name (zB entkommen der % und _ finden https://jira.spring.io/browse/DATAJPA-216) Wert vor Aufruf der Methode.

Meine vorgeschlagene Lösung bestand darin, eine CustomString und eine Converter<CustomString, String> mit der erforderlichen Geschäftslogik darin zu erstellen. Aber selbst wenn ich die Signatur auf findByNameIgnoreCase(CustomString name) ändere, wird die converter nicht verwendet und das Original CustomString wird an die SimpleJpaRepository übergeben.

Gibt es einen anderen Weg, wie das zu tun, ohne extra Services erstellen und den repository Aufruf umhüllen?

Antwort

0

Können Sie die Zeichenfolge nicht vor dem Aufrufen der Repository-Methode konvertieren?

Smth wie folgt aus:

entityRepository.findByNameIgnoreCase(transformNameIntoSomethingElse(name)); 
+0

Ja, das ist definitiv möglich :). Ich war nur neugierig, ob es eine transparentere Möglichkeit gibt, das zu tun, und ich war überrascht, dass der Konverter nicht funktioniert hat :). – vlastikcz

Verwandte Themen