首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring数据Rest (SDR)错误: PersistentEntity不能为空

Spring数据Rest (SDR)错误: PersistentEntity不能为空
EN

Stack Overflow用户
提问于 2015-04-26 10:57:12
回答 1查看 4.2K关注 0票数 8

我正在通过SDR公开我的春季数据存储库。当我导航到rest url (http://localhost:8080/trxes)时,我得到一个错误:{“原因”:null,"message":"PersistentEntity不能是null!"}

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

代码语言:javascript
复制
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表。

代码语言:javascript
复制
    @Entity
    @Table(name = "TRX")
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "TRX_TYPE", discriminatorType = DiscriminatorType.STRING)
    abstract public class Trx extends AbstractPersistable<Long> {

所有子类看起来都类似于下面所示的VariableIncome:

代码语言:javascript
复制
    @Entity
    @DiscriminatorValue("VARIABLE_INCOME")
    public class VariableIncome extends Trx {

我的存储库设置是(这个类没有注释):

代码语言:javascript
复制
public interface TrxRepository extends CrudRepository<Trx, Long> {

我使用以下方法运行所描述的设置:

代码语言:javascript
复制
@SpringBootApplication
public class RestApplication {

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

}

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

EN

回答 1

Stack Overflow用户

发布于 2015-05-22 18:52:02

这是一个"REST“方面的问题,而在”数据“方面则较少。

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

代码语言:javascript
复制
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include = As.PROPERTY, property = "@class")

您可以找到更多的这里,因为根据您的用例和首选项,有几种方法可以构造这个结构。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29876749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档