继承

2017-08-02 94 views
0

我的模型春数据MongoDB的默认类型包括以下例子:继承

class Aggregate { 
    private SomeClassWithFields property; 
} 

现在我决定引进继承SomeClassWithFields。结果如下:

class Aggregate { 
    private AbstractBaseClass property; 
} 

该集合已包含大量文档。这些文件不包含DB内_class性质,因为它们存储在继承存在了。

如果没有_class属性存在,是否有办法告诉Spring Data MongoDB使用SomeClassWithFields作为AbstractBaseClass的默认实现?

另一种解决方案是将_class添加到所有与脚本的现有文档,但是因为我们有很多的文件,这将需要一些时间。

+0

实际更新的所有文件将会更难,因为属性实际上是AbstractBaseClass的数组。 – codingtim

回答

0

我解决它通过使用AbstractMongoEventListener

的AbstractMongoEventListener具有予用于设置缺省值_class如果没有存在:)此方法是从DBOBJECT到我的域模型的任何映射之前称为onAfterLoad方法弹簧所以它的工作原理呢。

请注意,我还需要让spring数据mongodb知道mappingBasePackage,以便它能够在写入之前读取一个Aggregate。这可以实现PreconfiguredAbstractMongoConfiguration类的getMappingBasePackage方法。