2017-11-02 43 views
0

신호라는 간단한 클래스가 있습니다. 클래스 외모는 다음과 같습니다 :내 수업 용 코덱을 찾을 수 없습니다.

public class Signal { 
    private String id; 
    private Date timestamp; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public Date getTimestamp() { 
     return timestamp; 
    } 
    public void setTimestamp(Date timestamp) { 
     this.timestamp = timestamp; 
    } 
} 

MongoDB (v3.4)에 신호를 삽입하려고합니다.

org.bson.codecs.configuration.CodecConfigurationException : 클래스 in.co.을위한 코덱을 찾을 수 없습니다 나는 다음과 같은 예외를 얻고있다

public boolean xyz(Signal signal) { 
      try { 
       DatabaseConnection databaseConnection =DatabaseConnection.getInstance(); 
       MongoClient mongoClient = databaseConnection.getMongoClient(); 
       MongoDatabase db = mongoClient.getDatabase("myDb"); 
       MongoCollection<Signal> collection = db.getCollection("myCollection", Signal.class); 
       collection.insertOne(signal); 

       return true; 
      } catch (Exception e){ 
       logger.error("Error", e); 
       return false; 
      } 

     } 

을 : 나는 삽입하는 다음과 같은 방법을 사용하고 있습니다 mysite.webapi.models.Signal.

나는 유사한 질문 here을 확인했지만 삽입 코드가 다릅니다. 나는 힌트를 답에서 가져 왔고 나의 방법을 수정했으나 깨끗하게 보지 못했다. 수정 된 방법은 다음과 같습니다.

public boolean xyz(Signal signal) { 
     try { 
      DatabaseConnection databaseConnection =DatabaseConnection.getInstance(); 
      MongoClient mongoClient = databaseConnection.getMongoClient(); 
      MongoDatabase db = mongoClient.getDatabase("myDb"); 
      MongoCollection<Document> collection = db.getCollection("myCollection"); 

      Document doc = new Document(); 

      doc.put("id", signal.getId()); 
      doc.put("timestamp", signal.getTimestamp()); 
      doc.put("_id", new ObjectId().toString()); 

      collection.insertOne(doc); 

      return true; 
     } catch (Exception e){ 
      logger.error("Error", e); 
      return false; 
     } 

    } 
+0

모델에 대해 사용자 정의 '코덱'을 정의 할 수 있습니다. – nullpointer

+0

@nullpointer 나는 pojo 클래스 용 코덱을 썼다. 오른쪽 방향으로 나를 가리 키시겠습니까? –

+0

그게 힌트 였어, 네가 시도해 볼 수 있고 거기서도 작동하지 않는다면 다시 돌아올 수 있다는 것을 확신한다.) – nullpointer

답변

0

Java 클래스에 주석을 추가하셨습니까? 클래스 위에 @Entity가 필요하고 ID 필드 위에 @Id가 필요한 것 같습니다.

+0

"신호"는 기술적으로 내 아키텍처/논리에 따라 엔티티가 아니기 때문에 고의로 주석을 달지 않았다. –

+0

하지만 Morphia를 엔티티로 저장하면 컬렉션의 최상위 표현이므로이 컨텍스트의 엔티티입니다. –