Spring Data Mongo:使用Jackson注释映射对象

时间:2014-02-27 14:28:26

标签: groovy jackson spring-data-mongodb

我使用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的“定制”版本?

1 个答案:

答案 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