【问题标题】:Spring Data Mongo: mapping objects using Jackson annotationsSpring Data Mongo:使用 Jackson 注释映射对象
【发布时间】:2014-02-27 14:28:25
【问题描述】:

我使用 spring-data Mongo (1.3.3) 作为访问 Mongo 的机制。 我的领域对象是用 Groovy 编写的,我使用 Jackson 注释来定义属性和名称:

@JsonProperty('is_author')
boolean author = false
@JsonProperty('author_info')
AuthorInfo authorInfo

当我将我的一个域对象持久化到 Mongo 时,JsonProperty 注释将被忽略,并且使用标准对象的字段名称来持久化该字段。 通过挖掘 Spring Data Mongo documentation,我发现该库需要 @Field 注释来修改 Mongo 中的实际字段名称。

有没有办法只使用 Jackson 注释而不是使用两个注释来达到相同的结果。也许是 MappingMongoConverter 的“定制”版本?

【问题讨论】:

  • 如果您使用的是 Groovy 2.1+,您可以使用 AnnotationCollector 吗? mrhaki.blogspot.co.uk/2013/02/…
  • 这正是我所做的!我打算更新问题,但你更快。谢谢!
  • 呵呵,你做了所有的工作! ;-) 也许张贴你做了什么来回答这个问题?我知道我会支持它;-)

标签: groovy jackson spring-data-mongodb


【解决方案1】:

由于我的应用程序是在 Groovy 中,我使用了新的 @AnnotationCollectorAST 转换 (http://blog.andresteingress.com/2013/01/25/groovy-2-1-the-annotationcollector-annotation/) 来“合并”Jackson 和 Spring Data Mongo 注释。它看起来是这样的:简单而有效!

package com.someapp
import com.fasterxml.jackson.annotation.JsonProperty 
import groovy.transform.AnnotationCollector 
import org.springframework.data.mongodb.core.mapping.Field 
@AnnotationCollector([Field, JsonProperty]) 
public @interface JsonMongoProperty {}

下面是它的使用方法:

   @JsonMongoProperty('is_author')
   boolean author = false
   @JsonMongoProperty('author_info')
   AuthorInfo authorInfo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2016-12-18
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    相关资源
    最近更新 更多