MongoDBのマニュアルでは、手動で参照するためにObjecIdを使用することをお勧めします。JavaでObjectIdを文字列として使用する(マニュアルリファレンス)spring-data mongodbで
@Document
public class People {
private String name;
@Reference // or any Annotation to convert an ObjectId to a String
private String placesId;
private String url;
}
方法: 私は春・データのMongoDBを使用して、どのような私が探していることは、次のように定義された人々クラスを持つことですよhttps://docs.mongodb.com/manual/reference/database-references/#document-references
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"
})
を参照してください。 mongoDBのObjectIdとして "places_id"を持っていますが、POJOのStringにマッピングされていますか?
@Referenceのようなアノテーションが必要ですが、実装されていないようです。
spring-data-mongodbでこの種のアノテーションがない理由はわかりません。私は手動参照を使用するすべてのドキュメントのspring documentationに示唆されているような明示的なコンバータを実装したくありません。 それは正しいアプローチではないかもしれません。
私は何かを見逃しましたか?
UPDATE:
私の代わりのObjectIdの文字列のみを使用してPOJOを持っているという考えが好き。
@Document
public class Place {
@Id
private String id;
private String name;
}
place.getId()
は文字列になりますが、people.getPlaceId()
は、ObjectIdが次のようになりますのは、私はこのようなクラス場所を持っているとしましょう。私はこの不要なマッピングを避けたい。
ありがとうございました。私はこのマッピングを避けたいので、私の質問をより詳細に更新しました。しかし、あなたが示唆していることは働いています。 –
残念ながら、特定のアノテーションはまだ提供されていません。フィールド['_id'はマッピングレイヤで処理されます](https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.id-handling)。 _ MappingMongoConverterを使用すると、Javaクラスのプロパティがこの_idフィールドにマップされる方法を制御する特定の規則があります_ –
しかし、あなたは 'MappingMongoConverter' –