0
基本上我log4mongo是記錄用戶的活動,我想選擇 一個用戶和查看他的日誌條目,HOWTO映射log4mongo文檔到Java對象
此代碼工作確定
BasicDBObject blogEntryDbObj = (BasicDBObject)
mongo.getDB().getCollection("log").findOne(new BasicDBObject("_id",
new ObjectId(blogEntryId)));
但在這裏即時得到錯誤「試圖映射到一個未映射類:
log = morphia.fromDBObject(log.class, blogEntryDbObj);
應package
名字是什麼了log
ç lass或者可能 是無關緊要的。我意識到可能我的POJO沒有正確設置
但我無法弄清楚什麼是錯的。
log4mongo文檔看起來像這樣。
{
"_id" : ObjectId("4eecf4e4f9cb90f308193614"),
"timestamp" : new Date("Sat, 17 Dec 2011 21:00:36 GMT +01:00"),
"level" : "INFO",
"thread" : "Server.Connection:146.53.243.167:4570",
"message" : "setting RegistrationId for: zambe",
"loggerName" : {
"fullyQualifiedClassName" : "zambe.afa8cc37-4796-49c1-
a175-05a8daf0a88c",
"package" : ["zambe", "afa8cc37-4796-49c1-a175-05a8daf0a88c"],
"className" : "afa8cc37-4796-49c1-a175-05a8daf0a88c"
},
"fileName" : "PushUpdateRegistrationId.java",
"method" : "connect",
"lineNumber" : "61",
"class" : {
"fullyQualifiedClassName" :
"com.carlsberg.server.PushUpdateRegistrationId",
"package" : ["com", "carlsberg", "server",
"PushUpdateRegistrationId"],
"className" : "PushUpdateRegistrationId"
},
"host" : {
"process" : "[email protected]",
"name" : "ERIKSWEDMINI",
"ip" : "192.168.1.150"
}
}
這裏是我的POJO我嘗試映射到
@Entity(value = "log")
public class log
{
@Id private ObjectId id;
Date timestamp;
Level level;
String thread;
String message;
@Embedded
LoggerName loggerName;
String fileName;
String method;
String lineNumber;
@Embedded("class")
LoggerClass loggerClass;
@Embedded
MyHost host;
}
@Entity(noClassnameStored=true)
@Embedded
class LoggerName
{
String fullyQualifiedClassName;
@Property("package")
String[] _package;
String className;
}
@Entity(noClassnameStored=true)
@Embedded
class LoggerClass
{
String fullyQualifiedClassName;
@Property("package")
String[] _package;
String className;
}
@Entity(noClassnameStored=true)
@Embedded
class MyHost
{
String process;
String name;
String ip;
}
你是否先映射了你的日誌類? http://code.google.com/p/morphia/wiki/MappingObjects – Nat
@Nat不,我沒有,我把它映射到錯誤的地方。現在它正在工作。發佈答案,我會接受它。 「mapping是實例方法,你需要將它映射到Morphia的同一個實例上,以便從DBObject中獲得工作。」 – Erik