我有一个名为RepositoryConfig.java的类,它扩展了RepositoryRestConfigurerAdapter
。该类有一个方法
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration conf){
conf.exposeIdsFor(SuperClass.class);
}
以前版本的Spring会为扩展超类的所有类公开JSON中的id。现在升级到最新的Spring Boot 1.3.2之后,不会为扩展超类的类公开id。是否有一种新方法可以为每个扩展超类的类公开id?或者我是否会有一行代码公开每个扩展超类的类的id?
答案 0 :(得分:0)
您可以通过EntityManager
获取所有实体,并根据需要对其进行过滤:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
import javax.persistence.EntityManager;
import javax.persistence.metamodel.Type;
@Configuration
public class RepositoryConfig extends RepositoryRestConfigurerAdapter {
@Autowired
private EntityManager entityManager;
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(
entityManager.getMetamodel().getEntities().stream()
.map(Type::getJavaType)
.filter(SuperClass.class::isAssignableFrom)
.toArray(Class[]::new));
}
}
看看这个http://kazuar.github.io/scraping-tutorial/可以看到其他选项。