In MongoDB-Dokumentation schlagen sie vor, ObjecId für manuelle Verweise zu verwenden. siehe https://docs.mongodb.com/manual/reference/database-references/#document-referencesVerwendung von ObjectId als String in Java (Manuelle Referenz) mit Spring-Daten mongodb
original_id = ObjectId()
db.places.insert({
"_id": original_id,
"name": "Broadway Center",
"url": "bc.example.net"
})
db.people.insert({
"name": "Erin",
"places_id": original_id,
"url": "bc.example.net/Erin"
})
Ich verwende Feder-data-mongodb und was ich suche ist haben eine Menschen Klasse wie folgt definiert:
@Document
public class People {
private String name;
@Reference // or any Annotation to convert an ObjectId to a String
private String placesId;
private String url;
}
Wie eine "orte_id" als ObjectId in mongoDB haben, aber in unserem POJO einem String zugeordnet?
Ich hatte erwartet, eine Anmerkung wie @Reference zu haben, aber es scheint nicht implementiert zu werden.
Ich verstehe nicht, warum wir diese Art von Annotation nicht im Frühjahr-Daten-Mongong haben. Ich möchte keinen expliziten Konverter wie in spring documentation vorgeschlagen für alle Dokumente implementieren, die manuelle Referenzen verwenden. Vielleicht ist es nicht der richtige Ansatz.
Habe ich etwas übersehen?
UPDATE:
Ich mag die Idee, ein POJO haben nur String statt ObjectId verwenden. Lassen Sie uns sagen, dass ich eine Klasse Platz wie diese haben:
@Document
public class Place {
@Id
private String id;
private String name;
}
place.getId()
ein String sein, aber people.getPlaceId()
wird ein ObjectId sein. Ich möchte diese unnötige Zuordnung vermeiden.
Dank Alex. Ich habe meine Frage mit weiteren Details aktualisiert, weil ich diese Zuordnung vermeiden möchte. Aber was du vorschlägst, ist zu arbeiten. –
Leider gibt es noch keine spezifische Annotation. Nur das Feld ['_id' wird in der Mapping-Ebene behandelt (https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.id-handling). _Wenn Sie den MappingMongoConverter verwenden, gibt es bestimmte Regeln, die regeln, wie Eigenschaften aus der Java-Klasse diesem _id-Feld zugeordnet werden. –
Sie könnten jedoch nachsehen, wie Sie den 'MappingMongoConverter' anpassen –