有两种类型的实体,它们映射到单个MongoDB集合中的两个Java类:
@Document
public class Superclass { ... }
@Document(collection = "superclass")
public class Subclass extends Superclass { ... }
Run Code Online (Sandbox Code Playgroud)
和这些实体的两个存储库:
public interface SuperclassRepository extends MongoRepository<Superclass, String> {}
public interface SubclassRepository extends MongoRepository<Subclass, String> {}
Run Code Online (Sandbox Code Playgroud)
MongoRepositories不要正确处理实体的继承.在查询所有Subclass对象(例如SubclassRepository.findAll())时,结果集包含Superclass对象,这些对象是实例化的(或者至少已经尝试实例化),对于属于Subclass但不属于的一部分的字段具有空值Superclass.
预期的结果是SubclassRepository应该只返回Subclass对象,而SuperclassRepository应该返回Superclass和Subclass对象.它在Spring Data JPA中以这种方式工作.
有没有人遇到过这个bug并且有任何解决方法可以解决它?