今天我遇到了以下问题。当我将joda DateTime字段添加到我的某个域类时,我无法将此类的任何对象保存到我的MongoDB中。一段时间后抛出StackOverflowError,这似乎有某种循环。一旦我删除了该字段,一切正常。
我试过java mongo驱动程序2.9.3和2.10.0。数据绑定通过Spring-Data-Mongo 1.1.1.RELEASE进行。 Mongo版本是2.2.1。
要保留对象,我使用MongoTemplate#save。
User user = new User("user");
mongoTemplate.save(user, "users");
User类看起来像这样(为简单起见而剥离):
public final class User {
private final String suid;
private DateTime datetime = DateTime.now();
public User(String suid) {
this.suid = suid;
}
public String getSuid() {
return suid;
}
}
我尝试了几次网络搜索,但找不到其他人遇到此问题或任何提示如何处理joda时间。
对此的任何提示都将非常感激。
谢谢, 克里斯
答案 0 :(得分:4)
StackOverflowError听起来像是should file的错误,如果它不是来自您的代码。 您是否尝试使用custom converter来解决此问题?
答案 1 :(得分:1)
它是Spring Data MongoDB中的一个错误,我在将JODA LocalTime插入数据库时遇到了相同的stackoverflow错误,但是当我切换到java LocalTime时,它工作正常。