发布
社区首页 >问答首页 >在Spring Data MongoDB中,有没有办法在不使用@Version注解的情况下配置版本属性?

在Spring Data MongoDB中,有没有办法在不使用@Version注解的情况下配置版本属性?
EN

Stack Overflow用户
提问于 2021-08-18 09:46:39
回答 1查看 50关注 0票数 0

我自己的POJO包含复杂的类层次结构(支持继承的嵌入式文档)。我已经在不使用@TypeAlias的情况下使用ConfigurableTypeInformationMapper支持继承映射。另外,我希望我的POJO不依赖于'org.springframework.data:spring-data-mongodb‘框架,但是添加OptimisticLocking特性需要用@Version注解字段。在Spring Data MongoDB中,有没有办法在不使用@Version注解的情况下配置版本属性?

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 08:30:40

对于那些对如何在POJO中不依赖@Version注释感兴趣的人,可以看看MyCachingMongoPersistentProperty类。

代码语言:javascript
代码运行次数:0
复制
    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()
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68830082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档