2017-07-26 65 views
0

由於某些原因,我的Mongo DB只是創建一個屬於這些文檔的ID,而不是其他屬性。剛剛保存的Java MongoDB ID

我有一個Spring @Repository:

@Repository 
public class BeerRepository { 

    public void createBeer(final BeerDTO beerDTO) { 

     Mongo mongo = new Mongo("localhost", 27017); 
     DB db = mongo.getDB("beers"); 

     DBCollection beerCollection = db.getCollection(BeerDTO.COLLECTION_NAME); 

     beerCollection.insert(beerDTO); 
//  System.err.println(beerCollection.findOne()); 
    } 
} 

和一個簡單的POJO,沒有別的:

@Document 
public class BeerDTO extends BasicDBObject { 

    private static final long serialVersionUID = 1235041607375829595L; 
    public static final String COLLECTION_NAME = "Beers"; 

    @Field("id") 
    private String id; 

    @Field("name") 
    private String name; 

    @Field("abv") 
    private int abv; //alcohol by volume 

    public BeerDTO(String id, String name, int abv) { 
     this.id = id; 
     this.name = name; 
     this.abv = abv; 
    } 

}

然而,這是蒙戈越來越唯一:

enter image description here

非常感謝!

+0

也許它可以爲你明顯,但是,你有沒有設置插入之前beerDTO所有領域?那些字段不是null? – MinMiguelM

+0

感謝您的評論,但的確,這是我檢查的第一件事。 DTO包含數據。 – dev

回答

0

我改變了做法爲createBeer在回購和它的工作:

public void createBeer(final BeerDTO beerDTO) { 

     MongoClient mongoClient = new MongoClient(); 
     DB database = mongoClient.getDB("beers"); 
     DBCollection beerCollection = database.getCollection(BeerDTO.COLLECTION_NAME); 

     DBObject beer = new BasicDBObject("id", beerDTO.getId()) 
       .append("name", beerDTO.getName()) 
       .append("abv", beerDTO.getAbv()); 

     beerCollection.insert(beer); 
    }