2017-12-30 10 views
0

私はこのJavaのMongoDBのPOJOカスタムIDタイプ

@BsonDiscrimintor 
public class User { 
    @BsonId 
    private Integer _id; 
    // some properties 
    // getter & setter 
} 

のようなクラスを作成し、私はそれを見つけたとき、私は

public int addOne(User user) { 
    try { 
     user.set_id(Db.getNextId("user")); 

     userCollection.insertOne(user); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return user.get_id(); 
} 

を挿入しようしかしとき

ClassModel<User> userModel = ClassModel.builder(User.class).enableDiscriminator(true).build(); 
PojoCodecProvider pojoCodecProvider = PojoCodecProvider.builder().register(userModel).build(); 
pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(), fromProviders(pojoCodecProvider)); 


mongoClient = new MongoClient("localhost", MongoClientOptions.builder().codecRegistry(pojoCodecRegistry).build()); 
mongoDatabase = mongoClient.getDatabase("bbs").withCodecRegistry(pojoCodecRegistry); 

をコーデックに登録mongoでは、_idフィールドの型はObjectIDですが、Int32ではありません。 しかし、私は_idを整数として宣言しました、なぜですか?

答えて

0

MongoDBのデフォルトタイプidObjectIDです。テーブルを作成するときに変更することができます。 Javaで定義されているクラスでは決まっていません。

実際には、コード実行時にMongoDBが暗黙的にintObjectIDに変換します。

関連する問題