Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MongoDB正在保存ID_Java_Mongodb_Document_Nosql - Fatal编程技术网

Java MongoDB正在保存ID

Java MongoDB正在保存ID,java,mongodb,document,nosql,Java,Mongodb,Document,Nosql,出于某种原因,我的Mongo DB只是创建了一个属于文档的ID,而不是其他属性 我有一个Spring@Repository: @Repository public class BeerRepository { public void createBeer(final BeerDTO beerDTO) { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("beers");

出于某种原因,我的Mongo DB只是创建了一个属于文档的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;
    }
}

然而,这是Mongo得到的唯一东西:


非常感谢

我在回购协议中改变了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);
    }

也许这对您来说是显而易见的,但是,您在插入它之前是否设置了beerDTO的所有字段?这些字段不是空的吗?谢谢你的评论,但事实上,这是我检查的第一件事。DTO包含数据。