sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Solo exponer ciertos campos al ver un elemento específico con Spring Data?

Al usar Spring Data REST tiene algo especialmente diseñado para esto. Existe la noción de Proyecciones y Extractos con él puedes especificar qué y cómo quieres devolverlo.

Primero, crearía una interfaz que contendría solo los campos que desea.

@Projection(name="personSummary", types={Person.class})
public interface PersonSummary {
    String getEmail();
    String getId();
    String getName();
}

Luego en tu PersonRepository agregue esto como el uso predeterminado (¡solo se aplicará a los métodos que devuelven colecciones!).

@RepositoryRestResource(excerptProjection = PersonSummary.class)
public interface PersonRepository extends CrudRepository<Person, String> {}

Luego, al realizar una consulta de una colección, solo obtendrá los campos especificados en la proyección y, al obtener una sola instancia, obtendrá el objeto completo.