小编Mat*_*ski的帖子

Spring Data Mongodb存储库不能正确实现继承

有两种类型的实体,它们映射到单个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应该返回SuperclassSubclass对象.它在Spring Data JPA中以这种方式工作.

有没有人遇到过这个bug并且有任何解决方法可以解决它?

java spring spring-data spring-data-mongodb

10
推荐指数
1
解决办法
4376
查看次数

标签 统计

java ×1

spring ×1

spring-data ×1

spring-data-mongodb ×1