如何使用spring boot repository config公开超类的ID

时间:2016-02-18 22:16:51

标签: java rest spring-boot repository spring-data

我有一个名为RepositoryConfig.java的类,它扩展了RepositoryRestConfigurerAdapter。该类有一个方法

public void configureRepositoryRestConfiguration(RepositoryRestConfiguration conf){
    conf.exposeIdsFor(SuperClass.class);
}

以前版本的Spring会为扩展超类的所有类公开JSON中的id。现在升级到最新的Spring Boot 1.3.2之后,不会为扩展超类的类公开id。是否有一种新方法可以为每个扩展超类的类公开id?或者我是否会有一行代码公开每个扩展超类的类的id?

1 个答案:

答案 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/可以看到其他选项。