Как бы я перевести этот скрипт с C # на Java - PullRequest
0 голосов
/ 26 ноября 2018

Я недавно начал возиться с Java и MongoDB и обнаружил, что все не так просто, как в C #.

В C # я мог бы создать класс (как модель) для сохранения его как объекта Bson в MongoDB со следующей строкой.

acc = db.GetCollection<AccountModel>("accounts");

В Java я сделал свой, я получаюкласс как это:

accs = db.getCollection("accounts", AccountModel.class);

Когда я пытаюсь вставить этот объект Bson, я заполняю его так:

public void InsertPlayer(String username){

    Model_Account newAccount = new Model_Account();
    newAccount.Username = "username";
    newAccount.Password = "password";
    newAccount.Email = "email@hotmail.com";

    accounts.insertOne(newAccount);

}

Очень похоже на то, как я делал это в C #, но в JavaЯ получаю эту ошибку:

Caused by:org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class AccountModel.

Насколько я понимаю, мне нужен кодек POJO для достижения той же функциональности, это правильно?Если да, то как я могу его создать?

Заранее спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Настроив CodecRegistry, он будет управлять BSON-> POJO для вас;

MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
        MongoClient mongoClient = new MongoClient(connectionString);
        CodecRegistry pojoCodecRegistry = org.bson.codecs.configuration.CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
        MongoDatabase database = mongoClient.getDatabase("testdb").withCodecRegistry(pojoCodecRegistry);  

Вам также необходимо статически импортировать org.bson.codecs.configuration.CodecRegistries.fromRegistries и org.bson.codecs.configuration.CodecRegistries.fromProviders

На их github есть несколько примеров (надеюсь, что это не сработает, смеется): https://github.com/mongodb/mongo-java-driver/blob/master/driver-sync/src/examples/tour/PojoQuickTour.java и вот оригинальная ссылка, которую вы также нашли: http://mongodb.github.io/mongo-java-driver/3.8/driver/getting-started/quick-start-pojo/

...