【问题标题】:Java MongoDB just saving IDJava MongoDB 只是保存 ID
【发布时间】:2017-07-27 20:38:35
【问题描述】:

出于某种原因,我的 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 得到的唯一东西:

非常感谢!

【问题讨论】:

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

标签: java mongodb document nosql


【解决方案1】:

我在 repo 中更改了 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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多