Данные Spring HATEOAS возвращает нулевое значение для идентификаторов - PullRequest
0 голосов
/ 20 сентября 2019

Использование Spring-data-jpa представляет скрытие идентификатора и других свойств модели.Я перепробовал все возможные решения онлайн и, похоже, не работает.Я хочу отобразить все, что возвращается как нулевые значения. Предоставление всех идентификаторов при использовании Spring Data Rest

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
import org.springframework.hateoas.config.EnableEntityLinks;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.stereotype.Component;
import javax.persistence.Entity;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.Set;

@Configuration
@Component
@EnableEntityLinks
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class RepositoryConfig implements RepositoryRestConfigurer {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void configureRepositoryRestConfiguration(final RepositoryRestConfiguration config) {
        final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
        provider.addIncludeFilter(new AnnotationTypeFilter(Entity.class));

        final Set<BeanDefinition> beans = provider.findCandidateComponents("io.christdoes.wealth.tracker.entity");

        for (final BeanDefinition bean : beans) {
            try {
                config.exposeIdsFor(Class.forName(bean.getBeanClassName()));
            } catch (final ClassNotFoundException e) {
                // Can't throw ClassNotFoundException due to the method signature. Need to cast it
                throw new IllegalStateException("Failed to expose `id` field due to", e);
            }
        }
    }
}

Когда я размещаю сообщение на Restclient, оно возвращает нулевые значения для свойств.Я проверил таблицы базы данных, значения есть, но не отображаются.Что мне делать?

Это ответ, который я получил на restclient

{
  "permission": {
    "createdBy": null,
    "createdDate": null,
    "lastModifiedBy": null,
    "lastModifiedDate": null,
    "id": null,
    "name": "CREATE_tes"
  },
  "_links": {
    "permission": {
      "href": "http://localhost:8003/permission"
    },
    "self": {
      "href": "http://localhost:8003/permission/id/{id}",
      "templated": true
    }
  }
}
...