...
Code Block |
---|
@Autowired private ApiRepository apiRepository; private static final String API="Api"; //Nombre de la clase Java, respetar Mayus. .... @SuppressWarnings("unchecked") public <R extends JpaRepository<T, I>, T, I> R getJpaRepository(T versionable) { switch (versionable.getClass().getSimpleName()) { .... case API: return (R) apiRepository; .... } @SuppressWarnings("unchecked") public <S> S save(Versionable<S> versionable) { switch (versionable.getClass().getSimpleName()) { ..... case API: return (S) apiRepository.save((Api) versionable); ..... } |
3. Consideraciones extra si la entidad no extiende de OPResource
Para el caso de entidades versionables que no extiendan de OPResource habrá dos casos:
La entidad tiene atributo user
En este caso tendremos que ir al repositorio de la entidad, tomemos como ejemplo DashboardUserAccess y DashboardUserAccessRepository, y asegurarnos de que existe el método findByUser, si no, lo creamos:
Code Block |
---|
public interface DashboardUserAccessRepository extends JpaRepository<DashboardUserAccess, String> {
...
List<DashboardUserAccess> findByUser(User user);
}
|
La entidad no tiene atributo user
En este caso iremos al repositorio de la entidad, y crearemos el método findByUser como un default tal como en el siguiente ejemplo:
Code Block |
---|
public interface DashboardConfRepository extends JpaRepository<DashboardConf, String> {
....
default List<DashboardConf> findByUser(User user){
return findAll();
}
...
} |
Esto es necesario para que funcionen ciertas funcionalidades para usuarios no administradores.