Spring Boot暴露實體主鍵id配置類
阿新 • • 發佈:2018-12-06
在使用spring boot 編寫後臺,資料庫連線使用的是Spring data rest框架,但是在用postman測試的時候,使用get方法在返回實體屬性值時,發現ID並沒有返回,為了返回每個實體對應的主鍵ID,需加下方配置來暴露實體主鍵的Id。
參考連結:(https://stackoverflow.com/questions/30912826/expose-all-ids-when-using-spring-data-rest?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
@Configuration public class ExposeIdsRepositoryRestConfiguration extends RepositoryRestConfigurerAdapter { @Autowired private EntityManagerFactory entityManagerFactory; /** * 暴露所有實體 id * * @param config RepositoryRestConfiguration */ @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { List<Class<?>> entityClasses = getAllManagedEntityTypes(); for (Class<?> entityClass : entityClasses) { config.exposeIdsFor(entityClass); } } /** * 獲取所有實體型別 * * @return 型別列表 */ private List<Class<?>> getAllManagedEntityTypes() { List<Class<?>> entityClasses = new ArrayList<>(); Metamodel metamodel = entityManagerFactory.getMetamodel(); for (ManagedType<?> managedType : metamodel.getManagedTypes()) { Class<?> javaType = managedType.getJavaType(); if (javaType.isAnnotationPresent(Entity.class)) { entityClasses.add(managedType.getJavaType()); } } return entityClasses; } }```