【发布时间】:2013-02-04 16:22:03
【问题描述】:
我正在使用FasterXML 将我的对象映射到 MongoDB
我想使用expiring index,但为此,我需要在我的文档中添加一个 ISODate 字段。
如果我的 java 类有一个 Date 字段,它会被一个数字或一个字符串序列化,使用 DateSerializer 如下所述:http://wiki.fasterxml.com/JacksonFAQDateHandling
我追踪到这个函数:
/**
* Method that will handle serialization of Date(-like) values, using
* {@link SerializationConfig} settings to determine expected serialization
* behavior.
* Note: date here means "full" date, that is, date AND time, as per
* Java convention (and not date-only values like in SQL)
*/
public final void defaultSerializeDateValue(Date date, JsonGenerator jgen)
throws IOException, JsonProcessingException
{
// [JACKSON-87]: Support both numeric timestamps and textual
if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
jgen.writeNumber(date.getTime());
} else {
jgen.writeString(_dateFormat().format(date));
}
}
这两条路径都没有最终编写标准的 mongodb 日期类型,因此我的索引不起作用。
有没有办法强制将 java Date 类型序列化,就像从 mongo shell 创建文档时一样?或者,我可以通过“触发器”或类似的方式自动添加该字段吗? (目的是完全绕过序列化程序)
【问题讨论】:
-
我只是想知道:你在使用MongoJack吗?
标签: java mongodb serialization mapping fasterxml