我使用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的“定制”版本?
答案 0 :(得分:4)
由于我的应用程序是在Groovy中,我使用了新的@AnnotationCollector
AST转换(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