Ich definiere eine Basisklasse, die einen langen Primärschlüssel haben, genau so.GAE, JDO Wie Abfrage Primärschlüssel von Long/Long Typ
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public class ModelBase implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
und andere pojo erweitert die ModelBase. Als ich Abfrage von JDOQL wie dieser Code
public List<PersonalSetting> getByIds(Long... Ids) {
Query query = getQuery();
query.setFilter("id ==:id");
return (List<PersonalSetting>) query.execute(Ids);
}
aber es mir nur eine Ausnahme geben.
java.lang.ClassCastException: [Ljava.lang.Long; cannot be cast to com.google.appengine.api.datastore.Key
fand ich die Key-Klasse "Id" -Feld haben, aber ich kann nicht darauf zugreifen wie "id.id ==: id". Kann mir jemand sagen, wie ich es beheben kann? Vielen Dank!
Wenn ich versuche, den Primärschlüssel in String-Typ zu ändern. Es ist wieder passiert. Mein primäres Feld ist String, aber es kann nicht in Key umgewandelt werden. Warum? Wie die Methode contains funktioniert, ich bin verrückt nach diesem Problem. – Jump2cn