Das ist mein MongoDB Struktur,Frühling Mongo DB @DBREF
db.user.find();
Benutzer:
{
"name" : "KSK",
"claim" : [objectId("52ffc4a5d85242602e000000"),objectId("52ffc4a5d85242602e000001")]
}
Anspruch:
[
{
"_id" : "52ffc4a5d85242602e000001",
"claimName" :"XXXX"
},
{
"_id" : "52ffc4a5d85242602e000000",
"claimName" :"YYY"
}
]
Meine Entity-Klasse:
@Document(collection="user")
public class User{
@Id
private String id;
private String name;
@DBRef
private List<Claim> claim;
// setter and getter
}
Anspruch Klasse:
@Document(collection="Claim")
public class Claim{
@Id
private String id;
private String claimName;
}
ich eine Methode, die Benutzer mit Namen wie unten zu bekommen,
public User findByName(String name);
Wenn ich versuche, diese Methode zu treffen eine Störung erhält, dass
Nein Konverter, der vom Typ org.bson.types.ObjectId in den Typ java.lang.String konvertiert werden konnte
Also änderte ich meine User-Entity-Klasse wie unten,
Statt private List<Claim> claim
;
Geändert als Private List<ObjectId> claim
;
Nun, wenn ich eine Methode (findByName) ausführen, bekomme ich ein Benutzerobjekt, das beide Anspruch Objekt-IDs („52ffc4a5d85242602e000001“, „52ffc4a5d85242602e000000“) hat dann den Anspruch Liste iterieren und die Ansprüche Details entsprechend den Anspruch Objekt Id erhalten .
Anstatt dies zu tun, wenn ich findByName Methode ausführen möchte ich einen Benutzer und Anspruch Details erhalten. Wie kann ich diese Funktionalität erreichen?
Ihrem ersten Ansatz mit Liste gut aussieht. Sind Sie sicher, dass es sich nicht um ein Kamelfallproblem handelt, siehe '' claimname'' in Ihrer Java-Klasse und '' claimName'' in Ihrem JSON. –
Matt
@Matt es nur ein Tippfehler. Ich habe jetzt geändert. – KSK