我自己的POJO包含复杂的类层次结构(支持继承的嵌入式文档)。我已经在不使用@TypeAlias的情况下使用ConfigurableTypeInformationMapper支持继承映射。另外,我希望我的POJO不依赖于'org.springframework.data:spring-data-mongodb‘框架,但是添加OptimisticLocking特性需要用@Version注解字段。在Spring Data MongoDB中,有没有办法在不使用@Version注解的情况下配置版本属性?
发布于 2021-08-20 00:30:40
对于那些对如何在POJO中不依赖@Version注释感兴趣的人,可以看看MyCachingMongoPersistentProperty类。
class MyMongoMappingContext : MongoMappingContext() {
private var fieldNamingStrategy: FieldNamingStrategy? = null
override fun setFieldNamingStrategy(fieldNamingStrategy: FieldNamingStrategy?) {
if (fieldNamingStrategy == null) {
this.fieldNamingStrategy = DEFAULT_NAMING_STRATEGY
super.setFieldNamingStrategy(DEFAULT_NAMING_STRATEGY)
} else {
this.fieldNamingStrategy = fieldNamingStrategy
super.setFieldNamingStrategy(fieldNamingStrategy)
}
}
override fun createPersistentProperty(
property: Property,
owner: MongoPersistentEntity<*>,
simpleTypeHolder: SimpleTypeHolder
): MongoPersistentProperty {
return MyCachingMongoPersistentProperty(
property, owner, simpleTypeHolder, fieldNamingStrategy
)
}
companion object {
private val DEFAULT_NAMING_STRATEGY: FieldNamingStrategy =
PropertyNameFieldNamingStrategy.INSTANCE
}
}
class MyCachingMongoPersistentProperty(
property: Property,
owner: MongoPersistentEntity<*>,
simpleTypeHolder: SimpleTypeHolder,
fieldNamingStrategy: FieldNamingStrategy?
) : CachingMongoPersistentProperty(property, owner, simpleTypeHolder, fieldNamingStrategy) {
override fun isVersionProperty(): Boolean {
return SchemaConstants.VERSION_PROPERTY_NAME == super.getFieldName()
}
}
https://stackoverflow.com/questions/68830082
复制相似问题