MongoRepository findOne mit "id" anstelle von "_id"

Ich ein setup haben, sehr ähnlich wie diese: http://spring.io/guides/gs/accessing-data-mongodb/

In meinem POJO-Klasse I verwenden Sie ein String-Feld (annotiert mit @Id), und legen Sie es manuell an.

public class MyPojo {
  @Id
  private String id

  public MyPojo(String id) {
    this.id = id
  }

  //...
}

Wie im Beispiel verwende ich eine erweiterte Schnittstelle, die von MongoRepository:

public interface MyPojoRepository extends MongoRepository<MyPojo, String> {

}

Wenn ich meine Objekt

myrepo.save(new MyPojo("user"));

Alles funktioniert gut und in meiner Sammlung _id = "user" wie ich es erwarten zu sein.

Allerdings, wenn ich Abfragen will, dass das Objekt jetzt:

myrepo.findOne("user")

Erhalte ich null. Das debug-log zeigt, dass meine Sammlung wird abgefragt, mit

{ "id" : "Benutzer" }

statt "_id". Ist dieses Verhalten beabsichtigt? Ich finde das sehr verwirrend. Vor allem, weil die JavaDoc explizit erwähnt den Begriff "id" hier.

//EDIT:

myrepo.exists("user") 

gibt true zurück,...

  • Ich habe versucht, Ihnen eine Antwort geben. Lassen Sie mich wissen, wenn das klar ist oder Sie weitere Informationen benötigen.
InformationsquelleAutor wjentner | 2015-02-15
Schreibe einen Kommentar