0

このように、Long主キーを持つ基本クラスを定義します。

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public class ModelBase implements Serializable {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

その他のpojoはModelBaseを拡張します。私がこのコードのようにjdoqlによってクエリされたとき

public List<PersonalSetting> getByIds(Long... Ids) {
    Query query = getQuery();
    query.setFilter("id ==:id");
    return (List<PersonalSetting>) query.execute(Ids);
}

しかし、それは私に例外を与えるだけです。

java.lang.ClassCastException: [Ljava.lang.Long; cannot be cast to com.google.appengine.api.datastore.Key

Keyクラスに「Id」フィールドがあることがわかりましたが、「id.id ==:id」のようにアクセスできません。誰かがそれを修正する方法を教えてもらえますか?どうもありがとうございます!

4

1 に答える 1

0

JDOQLが無効です。コレクション内の要素を検索する場合は、「:ids.contains(id)」を実行します。

明らかに、使用しているGoogleの永続性プラグインのバージョンを記述してから、ログ/スタックトレースを記述することは理にかなっています。

于 2012-04-02T14:57:37.210 に答える