Spring Data MongoDB entfernt die Spalte __class

Spring Data MongoDB entfernt die Spalte _class

Standardmäßig fügen dieMappingMongoConvertervon SpringData für jedes in MongoDB gespeicherte Objekt eine zusätzliche Spalte "_class" hinzu. Zum Beispiel,

public class User {

    String username;
    String password;

    //...getters and setters
}

Speichern Sie es

    MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
    User user = new User("example", "password123");
    mongoOperation.save(user, "users");

Ergebnis

> db.users.find()
{
    "_class" : "com.example.user.User",
    "_id" : ObjectId("5050aef830041f24ff2bd16e"),
    "password" : "new password", "username" : "example"
}

SpringData hat diese zusätzlichen "_class" für einreason erstellt. Um diese zusätzlichen „_class“ zu entfernen, überschreiben Sie dieMappingMongoConverter und übergeben Sie einnew DefaultMongoTypeMapper(null).

Hier zeigen wir Ihnen, wie Sie die _class in Annotation oder XML-Weise entfernen.

1. Anmerkung

@Configuration
public class SpringMongoConfig{

  public @Bean
  MongoDbFactory mongoDbFactory() throws Exception {
    return new SimpleMongoDbFactory(new Mongo(), "database");
  }

  public @Bean
  MongoTemplate mongoTemplate() throws Exception {

    //remove _class
    MappingMongoConverter converter =
        new MappingMongoConverter(mongoDbFactory(), new MongoMappingContext());
    converter.setTypeMapper(new DefaultMongoTypeMapper(null));

    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);

    return mongoTemplate;

  }

}

2. XML

Gleiche Sache, aber in XML-Datei.




 

 
    
 

 
    
    
    
 

 
    
    
 

3. Testen Sie es erneut

Speichern Sie es erneut, die "_class" ist verschwunden.

> db.users.find()
{
    "_id" : ObjectId("random code"),
    "password" : "new password", "username" : "example"
}