ich die folgenden Java-Modellklasse in AppEngine habe:Leere Liste in appengine Datenspeichern: java vs Python
public class Xyz ... {
@Persistent
private Set<Long> uvw;
}
Beim Speichern eines Objekts Xyz mit einem leeruvw in Java gesetzt, bekomme ich ein "null" Feld (wie in der Appengine Datastore Viewer aufgelistet). Wenn ich versuche, das gleiche Objekt in Python (durch remote_api) zu laden, wie durch die folgende Python-Modellklasse definiert:
class Xyz(db.Model):
uvw = db.ListProperty(int)
ich eine „BadValueError: Immobilien uvw erforderlich ist“.
Wenn mit einer leeren uvw Liste ein anderes Objekt der gleichen Klasse in Python zu speichern, druckt der Datenspeicher-Viewer eine „ fehlt“ ein.
Offenbar leere Listen Speicherbehandlung unterscheidet zwischen Java und Python und führen zu "inkompatiblen" Objekten.
So meine Frage: Gibt es eine Möglichkeit, entweder:
- Kraft Java eine leere Liste als „fehlend“ Feld zu speichern,
- Kraft Python, um eine „Null“ -Liste anmutig zu akzeptieren, wie eine leere Liste beim Laden des Objekts?
Oder irgendein anderer Vorschlag, wie man leeres Listenfeld in beiden Sprachen handhabt.
Vielen Dank für Ihre Antworten!
Danke, aber wenn ich das Objekt auf den Datenspeicher speichern die Menge ist * leer * nicht * null * (mein Code nicht klar, ich hätte angeben sollen, dass vor dem Speichern des Objekts das Set ein leeres HashSet ist). Der Trick hier ist, dass der Appengine-Datenspeicher-Layer beim Speichern die leere Menge in "Null" -Werte konvertiert, und ich sehe keine Kontrolle über dieses Verhalten. –
@IOranger: Ah, OK. Ich würde diese Antwort löschen, aber ich werde es hier lassen, damit jemand anderes später nicht kommt und dasselbe sagt. – Powerlord