È possibile specificare projection
quando si chiama direttamente il metodo dell'archivio dati? Ecco il codice di repository - Nota non vorrei esporlo via REST, invece mi piacerebbe essere in grado di chiamare da un servizio o un controller:Come applicare le proiezioni Spring Data in un controller MVC Spring?
@RepositoryRestResource(exported = false)
public interface UsersRepository extends PagingAndSortingRepository<User, Long> {
@Query(value = "SELECT u FROM User u WHERE ....")
public Page<User> findEmployeeUsers(Pageable p);
}
Poi in un controllore faccio questo:
@PreAuthorize(value = "hasRole('ROLE_ADMIN')")
@RequestMapping(value = "https://stackoverflow.com/users/employee")
public Page<User> listEmployees(Pageable pageable) {
return usersRepository.findEmployeeUsers(pageable);
}
C'è un modo per specificare projection
per il metodo findEmployeeUsers
quando viene chiamato direttamente come sopra?
Mi rendo conto che il codice sopra potrebbe sembrare strano per qualcuno ... sarebbe possibile esporre il repository tramite REST e inserire la cosa @PreAuthorize
nel repository. Il controller del pensiero è il posto più adatto per i controlli di sicurezza: è più naturale e più semplice da testare.
Quindi, la cosa può essere passata in qualche modo in un metodo di deposito chiamato direttamente? projection
?
Grazie, sembra un approccio decente! Sfortunatamente non riesco a provarlo perché sono bloccato con SpringBoot 1.2.2 (3) - non ha la versione GA di laters del progetto spring-data ... Mi rendo conto che si tratta di una domanda diversa - ma è c'è modo di mettere la GA in un'app di SpringBoot 1.2.2 o 1.2.3 per testare questa cosa? – Barbadoss
Ecco come farlo - http://spring.io/blog/2015/03/26/what-s-new-in-spring-data-fowler, andando a provare e provare la nuova infrastruttura di proiezioni. – Barbadoss
@OliverGierke sembra che questo non funzioni più nella versione corrente di Spring Data? Utilizzando l'esempio fornito, Jackson lancia un 'com.fasterxml.jackson.core.JsonGenerationException: Impossibile avviare un oggetto, aspettando il nome del campo' –