これは私のMongoDB構造で、春モンゴDB @DBREF
db.user.find();
ユーザー:
{
"name" : "KSK",
"claim" : [objectId("52ffc4a5d85242602e000000"),objectId("52ffc4a5d85242602e000001")]
}
主張:
[
{
"_id" : "52ffc4a5d85242602e000001",
"claimName" :"XXXX"
},
{
"_id" : "52ffc4a5d85242602e000000",
"claimName" :"YYY"
}
]
マイEntityクラスは次のとおりです。
@Document(collection="user")
public class User{
@Id
private String id;
private String name;
@DBRef
private List<Claim> claim;
// setter and getter
}
クレームクラス:
@Document(collection="Claim")
public class Claim{
@Id
private String id;
private String claimName;
}
私はこの方法をヒットしようとした場合、私は、以下のような名前で
public User findByName(String name);
をユーザーを取得するためのメソッドを持っているが、
エラーなしを取得していますコンバーターがタイプorg.bson.types.ObjectIdからタイプjava.lang.Stringに変換できることが判明しました
私はUser Entityクラスを以下のように変更しました
private List<Claim> claim
の代わりに;
Private List<ObjectId> claim
に変更。
メソッド(findByName)を実行すると、クレームオブジェクトID(「52ffc4a5d85242602e000001」、「52ffc4a5d85242602e000000」)を持つユーザーオブジェクトが取得され、クレームリストを反復し、クレームオブジェクトID 。
findByNameメソッドを実行すると、これを実行する代わりに、ユーザーとクレームの詳細を取得する必要があります。この機能を実現するにはどうすればいいですか?
あなたの最初のアプローチを使用して問題はないはずです。キャメラケースの問題ではないと確信できますか?Javaクラスの '' claimname''とJSONの '' ClaimName''を参照してください。 – Matt
@Mattそれは単にタイプミスです。私は今修正した。 – KSK