Saya akan menjelaskan bagaimana berbagai bidang ditangani dengan sebuah contoh. Berikut Game.java
Kelas POJO mewakili pemetaan objek ke game
dokumen koleksi.
public class Game {
String name;
List<Actions> actions;
public Game(String name, List<Actions> actions) {
this.name = name;
this.actions = actions;
}
public String getName() {
return name;
}
public List<Actions> getActions() {
return actions;
}
// other get/set methods, override, etc..
public static class Actions {
Integer id;
String type;
public Actions() {
}
public Actions(Integer id) {
this.id = id;
}
public Actions(Integer id, String type) {
this.id = id;
this.type = type;
}
public Integer getId() {
return id;
}
public String getType() {
return type;
}
// other methods
}
}
Untuk Actions
kelas Anda perlu menyediakan konstruktor dengan kemungkinan kombinasi. Gunakan konstruktor yang sesuai dengan id
, type
, dll. Misalnya, buat Game
objek dan simpan ke database:
Game.Actions actions= new Game.Actions(new Integer(1000));
Game g1 = new Game("G-1", Arrays.asList(actions));
repo.save(g1);
Ini disimpan dalam koleksi database game
sebagai berikut (ditanyakan dari mongo
cangkang):
{
"_id" : ObjectId("5eeafe2043f875621d1e447b"),
"name" : "G-1",
"actions" : [
{
"_id" : 1000
}
],
"_class" : "com.example.demo.Game"
}
Perhatikan actions
Himpunan. Karena kami hanya menyimpan id
bidang di Game.Actions
objek, hanya bidang itu yang disimpan. Meskipun Anda menentukan semua bidang di kelas, hanya bidang yang disediakan dengan nilai yang dipertahankan.
Ini adalah dua dokumen lagi dengan Game.Actions
dibuat dengan type
saja dan id + type
menggunakan konstruktor yang sesuai:
{
"_id" : ObjectId("5eeb02fe5b86147de7dd7484"),
"name" : "G-9",
"actions" : [
{
"type" : "type-x"
}
],
"_class" : "com.example.demo.Game"
}
{
"_id" : ObjectId("5eeb034d70a4b6360d5398cc"),
"name" : "G-11",
"actions" : [
{
"_id" : 2,
"type" : "type-y"
}
],
"_class" : "com.example.demo.Game"
}