In einem Google App Engine App persistierenden, habe ich dieses Modell:ohne Eigenschaften, wenn sie nicht im Besitz befindliche Entität Beziehung jdo (gae)
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Message {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private Date timestamp;
@Persistent
private String text;
@Unowned
@Persistent(defaultFetchGroup = "true")
private User sender;
...
}
Das Modell hat eine @Unowned
Beziehung zu einem Sender, da ein Benutzer existiert unabhängig von eine Nachricht.
Was ich tun möchte, ist persistent Message
Objekte mit partiellen User
Objekte (z. B. ich bin nur daran interessiert, die Benutzer-ID und den Benutzernamen zu speichern). In meiner Endpunktklasse speichere ich zwar Nachrichten, aber wenn ich nicht alle Felder für den gegebenen Benutzer in die Beziehung einbeziehe, wird das Benutzerobjekt mit den fehlenden Feldern aktualisiert (z. B. hat der betreffende Benutzer kein Passwort usw .). Was ist der beste Weg, um das zu erreichen, was ich will, ohne das ursprüngliche Objekt zu "korrumpieren"?
PS Meine Endpunkte Methode ist tot einfach. Im Grunde rufen Sie einfach pm.makePersistent(message);
auf der Nachricht (als Methodenparameter angegeben).
Dank! Obwohl Sie meine Frage nicht wirklich beantwortet haben, fand ich Ihre Randnotiz interessant. Ich wusste nicht, dass Google gegen die Verwendung von JDO riet. Ich werde Objectify ansehen. –
Ich könnte es anders formuliert haben, aber was ich zu sagen versuchte ist, dass die Entität "User" in diesem Fall eine separate Entität von der "Message" ist - Sie sollten die Entität "User" separat von Nachricht "Entität. Das heißt, Sie müssen den Benutzer auch separat persistieren. – COBB
Ja, das mache ich schon. Benutzer leben vollständig getrennt von Nachrichten (Benutzerobjekte werden bei der Registrierung erstellt).Wenn ich jedoch ein Nachrichtenobjekt einem Benutzer (absichtlich Eigenschaften des bestimmten Benutzers auslassen) geben, wird das ursprüngliche Benutzerobjekt geändert. –