Ich verwende die Google AppEngine, mit Java. Wenn ich einige Funktionen des Datenspeichers verwende, erhalte ich eine Fehlermeldung:
Object with id "edvaltt.Teacher@64064b" is managed by a different Object Manager
Ich weiß nicht, was das bedeutet, wie ich es beheben kann oder wo ich eine Dokumentation zu diesem Fehler finden kann. Kann mir jemand helfen? Der Code, den ich verwende, lautet:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class School {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String shortname;
@Persistent
private String fullname;
@Persistent
@Order(extensions = @Extension(vendorName="datanucleus", key="list-ordering", value="code asc"))
private List<Teacher> Teachers;
...
public Teacher FindOrCreateTeacher(String code)
{
// Can we find the teacher without any database code?
Teacher newTeacher = FindTeacher(code);
if (newTeacher != null)
return newTeacher;
// Create the teacher:
PersistenceManager pm = PMF.get().getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
for (Teacher teacher : Teachers) {
if (teacher.getCode() == code) {
tx.rollback();
return teacher;
}
}
newTeacher = new Teacher(code);
Teachers.add(newTeacher);
pm.makePersistent(newTeacher);
pm.makePersistent(Teachers);
tx.commit();
} finally {
tx.commit();
}
return newTeacher;
}
Ich glaube, dass " private List<Teacher> Teachers;
" bezieht sich auf eine Beziehung "von einem zu vielen".