Ich bin neu in der Appengine und ich vermisse etwas über die Eltern-Kind-Beziehung. Und natürlich ist die Dokumentation wie immer sehr leicht ...Java Objectify: Ich vermisse etwas über Eltern und Kinder
I definiert diese
@Entity
public class StockRow {
@Parent Key<StockTable> table;
@Id Long id;
Long quantity;
String status;
String type;
String table;
private StockRow() {}
public StockRow (String tableName, com.google.appengine.api.datastore.Entity queryResult) {
id = queryResult.getKey().getId();
quantity = (Long) queryResult.getProperty("quantity");
status = (String) queryResult.getProperty("status");
type = (String) queryResult.getProperty("stock-name");
table = StockTable = Key.create(StockTable.class, tableName);
}
}
(ich die Getter für hier supress)
Dies ist die Kinder: eine Reihe.
Dann die Eltern
@Entity
public class StockTable {
@Id public String table;
private StockTable() {}
}
Ziemlich einfach.
Ich habe zwei Fragen dazu:
Ich möchte eine Tabelle mit mehreren Reihen haben. Eine Tabelle enthält Zeilen mit derselben ID. Die ID von Stocktable ist also die ID, die von allen Zeilen geteilt wird.
1) Ist es der richtige Weg?
StockRow s müssen Entitäten sein, weil ich sie aus dem Datenspeicher abfrage. Vielleicht ist es Container, aber ich verstehe es nicht ...
Oder ist es vielleicht nutzlos, ein Elternteil zu definieren?
2) Wie werden alle Kinder für eine bestimmte ID geladen?
Ich lese diese auf Objectif Wiki aber der Zweck dieser Abfrage ist nicht ganz klar:
Thing th = ofy().load().type(Thing.class).parent(par).id(123L).now();
Ich weiß nicht, was in par
erste ist, und zweitens habe ich den Eindruck, dass diese Last nicht das, was Ich will.
Danke!
Danke, ich habe jetzt das Interesse daran, es zu machen. Aber etwas stört mich in dem, was du gesagt hast: zwei Entitäten der gleichen Art können nicht den gleichen Schlüssel teilen? Weil ich denke, dass ich einen Schlüssel gewählt habe, der in meinem Dataflow-Job nicht primär ist, so dass ich in diesem Fall unvollständige Daten habe ... Über meine erste Frage habe ich meinen Code korrigiert, aber ich weiß nicht, ob er funktioniert, weil ich ihn nicht bereitgestellt habe es wird noch etwas mehr Zeit brauchen. –
Meinst du, dass das "ID" -Feld in StockRow kein Primärschlüssel ist? Denken Sie daran, dass die Art und das Vorfahren auch Teil des Schlüssels sind, so lange es innerhalb der "Tabelle" einzigartig ist, sollten Sie in Ordnung sein. Wenn nicht, müssen Sie einen eindeutigen Schlüssel definieren. – Dawson
Danke, also habe ich ein Problem hier, ich werde einen künstlichen Schlüssel für StockRows im Datenspeicher berechnen, weil ich nicht alle Daten habe. Für Objectify werde ich es endlich nicht mehr benutzen, es klappt jetzt aber danke für die Hilfe! –