spring-data-rest - Spring Data Rest (SDR) 错误 : PersistentEntity must not be null

标签 spring-data-rest

我正在努力通过 SDR 公开我的 spring 数据存储库。当我导航到我的休息 url ( http://localhost:8080/trxes ) 时,我收到一个错误: {"cause":null,"message":"PersistentEntity 不能为空!"}

在仔细检查 spring 数据源时,我看到 getRepositoryFactoryInfoFor() 方法返回空的存储库信息,即

private RepositoryFactoryInformation<Object, Serializable> getRepositoryFactoryInfoFor(Class<?> domainClass) {

    Assert.notNull(domainClass, "Domain class must not be null!");

    RepositoryFactoryInformation<Object, Serializable> repositoryInfo = repositoryFactoryInfos.get(ClassUtils
            .getUserClass(domainClass));
    return repositoryInfo == null ? EMPTY_REPOSITORY_FACTORY_INFO : repositoryInfo;
}

我的问题的可能原因是我的持久实体继承自一个基类,并且我使用的是单表策略,如下所示:

数据库中有一个 TRX 表与匹配的 Trx 类。 VariableIncome、VariableExpense、FixedIncome 和 FixedExpense 都继承自 Trx 并持久化到 TRX 表中。
    @Entity
    @Table(name = "TRX")
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "TRX_TYPE", discriminatorType = DiscriminatorType.STRING)
    abstract public class Trx extends AbstractPersistable<Long> {

所有子类看起来都类似于下图所示的 VariableIncome:
    @Entity
    @DiscriminatorValue("VARIABLE_INCOME")
    public class VariableIncome extends Trx {

我的存储库设置是(这个类没有注释):
public interface TrxRepository extends CrudRepository<Trx, Long> {

我使用以下方法运行所描述的设置:
@SpringBootApplication
public class RestApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestApplication.class, args);
    }

}

我想我正在寻找的是是否有一种方法可以告诉 SDR(当它试图推断出我的持久类是什么时)所有子类都应该映射回 Trx?

最佳答案

这是“REST”方面的问题,而“数据”方面的问题较少。

您需要使用 Jackson 注释来获取类型信息。

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include = As.PROPERTY, property = "@class")

您可以找到更多 here ,因为有几种方法可以根据您的用例和偏好来构建它。

关于spring-data-rest - Spring Data Rest (SDR) 错误 : PersistentEntity must not be null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29876749/

相关文章:

java - Spring Data Rest Repository 不会公开删除

spring-data-rest - 将关联链接添加到 Spring Data Rest 自定义公开方法

Spring Data Rest、SpringFox 和 JpaRepository 自定义查找器

spring - Rest Controller 与 spring-data-rest RepositoryRestResource

Spring 数据休息 : Date serialize date as timestamp

Spring Data Rest - PATCH Postgres jsonb 字段

java - RepositoryRestMvcConfiguration 无法转换为 javax.servlet.Servlet

java - Spring Data Rest存储库的安全方法

java - 自定义 Spring Data Rest @ManyToMany 关系处理

java - "PersistentEntity must not be null"MongoDB 和 Spring Data REST 异常