【问题标题】:: Missing type id when trying to resolve subtype of abstract class: 尝试解析抽象类的子类型时缺少类型 ID
【发布时间】:2020-04-05 01:50:40
【问题描述】:

我已经解决了大约 2 天的问题,但我仍然没有找到任何解决该问题的方法。

我有一个具体的和两个实现的类,分别是 FilteredObjectDataCustomerFilteredObjectJsonProductFilteredObjectJson

课程如下:

@JsonSubTypes({
        @JsonSubTypes.Type(value = CustomerFilteredObjectJson.class, name = "Customer"),

        @JsonSubTypes.Type(value = ProductFilteredObjectJson.class, name = "Product")}
)
public abstract class FilteredObjectData implements Serializable {
    private static final long serialVersionUID = -8746510068813833450L;
}
@Getter
@Setter
@NoArgsConstructor
public class CustomerFilteredObjectJson extends FilteredObjectData implements Serializable {

    private static final long serialVersionUID = -5827825016371137372L;
    private List<Long> cities;
    private List<Long> distiricts;
    private List<Long> channels;
    private String salesmanCode;
    private List<String> accountCodes;
    private List<String> taxNumbers;
}
@Getter
@Setter
@NoArgsConstructor
public class ProductFilteredObjectJson extends FilteredObjectData implements Serializable {

    private static final long serialVersionUID = 2310254379556207058L;
    private List<String> productCodes;
}

同时我正在使用@vladmihalcea 的hibernate-type-52 框架。

现在,当我尝试从 PostgreSQL 获取数据时,我收到如下错误;

com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class io.salesart.core.entities.json.FilteredObjectData]: missing type id property 'type'
 at [Source: (String)"{"productCodes": []}"; line: 1, column: 20]

导致这个问题的原因是什么?请你帮助我好吗 ?

【问题讨论】:

    标签: hibernate objectmapper hibernate-types


    【解决方案1】:

    如果您根据Hibernate Types GitHub repository 中的现有测试之一创建复制测试用例,那么我可以看看问题所在。

    向我发送一个包含复制测试用例的拉取请求,我会在之后对其进行调查。

    【讨论】:

    • 感谢@Vlad 的关心,我在这里写完后解决了这个问题。问题与我的模型有关,我已对其进行了更改并按预期工作。
    【解决方案2】:

    我在使用 Optional 类时遇到了同样的错误。

    例如Optional&lt;Computer&gt; computer = new Computer(); 并将this.saveTo(computer) 直接存储到缓存中。

    但是当我将方法参数更改为this.saveTo(computer.get()); 然后问题解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      相关资源
      最近更新 更多