Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用spring引导存储库配置公开超类的ID_Java_Rest_Spring Boot_Repository_Spring Data - Fatal编程技术网

Java 如何使用spring引导存储库配置公开超类的ID

Java 如何使用spring引导存储库配置公开超类的ID,java,rest,spring-boot,repository,spring-data,Java,Rest,Spring Boot,Repository,Spring Data,我有一个名为RepositoryConfig.java的类,它扩展了repositoryrestconfiguureradapter。这个类有一个方法 public void configureRepositoryRestConfiguration(RepositoryRestConfiguration conf){ conf.exposeIdsFor(SuperClass.class); } Spring的早期版本将在JSON中公开扩展超类的所有类的ID。现在,在升级到最新的Spri

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

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

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

您可以通过
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));
    }
}

看看这个,看看其他选项。

可能会help@petey我有许多类扩展了一个超类,我想为它公开id。我想知道是否有一种方法不需要为每个子类编写一行代码