Aan de hand van een voorbeeld zal ik uitleggen hoe met verschillende velden wordt omgegaan. De volgende Game.java
De klasse POJO vertegenwoordigt de objecttoewijzing aan het game
incasso document.
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
}
}
Voor de Actions
klasse moet je constructeurs de mogelijke combinaties geven. Gebruik de juiste constructor met id
, type
, enz. Maak bijvoorbeeld een Game
object en sla op in de database:
Game.Actions actions= new Game.Actions(new Integer(1000));
Game g1 = new Game("G-1", Arrays.asList(actions));
repo.save(g1);
Dit wordt opgeslagen in de databaseverzameling game
als volgt (opgevraagd door mongo
schaal):
{
"_id" : ObjectId("5eeafe2043f875621d1e447b"),
"name" : "G-1",
"actions" : [
{
"_id" : 1000
}
],
"_class" : "com.example.demo.Game"
}
Let op de actions
reeks. Omdat we alleen de id
. hadden opgeslagen veld in het Game.Actions
object, wordt alleen dat veld opgeslagen. Ook al specificeert u alle velden in de klasse, alleen die met waarden worden bewaard.
Dit zijn nog twee documenten met Game.Actions
gemaakt met type
alleen en id + type
met behulp van de juiste constructors:
{
"_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"
}