Spring 数据 Mongodb 错误地转换文档

Spring Data Mongodb Convert Document Falsely

我的文档结构具有一些通用性 class。写入 mongodb 一切正常。但是当从 mongodb spring 数据中读取文档时,数据错误地将文档转换为对象。它将子文档转换为另一种类型。两种类型(实际的子集合类型和错误转换的类型)都继承自相同的抽象 class。

模型类:(getter setter 由 lombok 生成)

@Data
public abstract class CandidateInfo {

    private String _id;
}

@Data
public class CandidateInfoContainer<E extends CandidateInfo> {

    private String _id;

    private int commentCount = 0;

    @Valid
    private List<E> values = new ArrayList<>();
}

@Data
public class Responsibility extends CandidateInfo {

    @NotNull
    private String responsibilityId;

    @ReadOnlyProperty
    private String responsibilityText;
}

@Data
public class Experience extends CandidateInfo {

    @Valid
    private CandidateInfoContainer<Responsibility> responsibilities;
}

@Document
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class Candidate {

    private String _id;

    @Valid
    private CandidateInfoContainer<Experience> experiences;
}

并且如果您创建如下所示的 mongo 存储库:

@Repository
public interface CandidateRepository extends MongoRepository<Candidate,String>{
}

并像这样使用它:

@Autowired
private CandidateRepository candidateRepository;

Candidate candidate = candidateRepository.findOne("documentId");

然后 spring 数据 mongo 映射转换器创建 candidates.experiences.responsibilities.values 列表作为 Experince 列表但是它应该是责任列表。

您可以在 this link 中找到演示项目以及有关该问题的更多信息。任何人都可以指出什么是错误的吗?否则我必须编写自己的转换器(演示有一个)

有什么不明白的可以追问。

谢谢。

我在 spring-data-mongo here 中打开了一个问题。显然我发现了一个错误!谢谢大家