0

基本的に、私のlog4mongoはユーザーアクティビティをログに記録しており、1人のユーザーを選択して、彼のログエントリを表示したいと思います。

このコードは正常に機能しています

BasicDBObject blogEntryDbObj = (BasicDBObject) 
mongo.getDB().getCollection("log").findOne(new BasicDBObject("_id", 
new ObjectId(blogEntryId))); 

しかし、ここで「マップされていないクラスにマップしようとしています:」というエラーが発生します。

log = morphia.fromDBObject(log.class, blogEntryDbObj); 

packageクラスの名前は何であるか、logあるいはそれは無関係かもしれません。おそらく私の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" : "5832@ERIKSWEDMINI", 
    "name" : "ERIKSWEDMINI", 
    "ip" : "192.168.1.150" 
  } 
}

これが私のPOJOimがマップしようとしているものです

@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;
} 
4

1 に答える 1

1

morphia.mapインスタンスメソッドです。仕事morphia.mapに取り掛かるには、モルフィアの同じインスタンスでそれを行う必要がありますmorphia.fromDBObject

于 2012-01-18T08:31:10.353 に答える