我有以下实体:
@Entity("platform_defs")
class PlatformDef {
@Id
Long id
@Property("name")
String name
@Property("abbreviation")
String abbreviation
@Property("type")
String type
@Property("hg_repo")
String hgRepo
@Property("port")
Long port
@Property("status")
String status
}下面的Morphia代码试图持久化该实体的一个实例:
public void savePlatformDef(PlatformDef pDef) {
try {
AppConfig config = getConfig();
String dbName = config.getMongo().getDatabaseName();
Mongo mongo = new Mongo(config.getMongo().getHost(), config.getMongo().getPort());
morphia = new Morphia();
datastore = morphia.createDatastore(mongo, dbName);
morphia.map(PlatformDef.class);
datastore.save(pDef);
} catch(Throwable t) {
System.out.println(t.getMessage());
}
}当我运行这个命令时,我得到:
java.lang.StackOverflowError下面是正在进行的调用的递归列表:
at org.mongodb.morphia.mapping.EmbeddedMapper(toDBObject:40)
at org.mongodb.morphia.mapping.Mapper(writeMappedField:642)
at org.mongodb.morphia.mapping.Mapper(toDBObject:544)
at org.mongodb.morphia.mapping.Mapper(toDBObject:526)这个模式一遍又一遍地重复。我的设置有什么问题?
发布于 2014-10-02 21:46:52
也许为时已晚,但我也遇到了这个问题。我不能从您提供的代码中判断,但最有可能的是您在构造传递给savePlatformDef方法的platformDef时使用了匿名内部类。显然,morphia不支持匿名内部类,它们会导致堆栈溢出,就像这样。有关详细信息,请参阅此错误:
https://github.com/mongodb/morphia/issues/402
希望这个答案能在未来帮助其他像我一样的人:)
发布于 2014-08-05 00:32:27
@IdMongoClient而不是Mongo,后者已经被弃用/已经被删除了,这取决于你的Mongo 池化它们
https://stackoverflow.com/questions/25120334
复制相似问题