2013-06-13 8 views
9

Używam GAE 1.8.1 i trafiłem na problem z Objectify z new scattered ID system. Przynajmniej myślę, że to Objectify, nie jestem pewien (Korzystanie z Objectify 4 RC1). Dostaję to ..Jak określić starsze przyrostowe identyfikatory za pomocą Java

Caused by: java.lang.IllegalArgumentException: id cannot be zero 
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:52) 
    at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:47) 
    at com.googlecode.objectify.Key.<init>(Key.java:91) 
    at com.googlecode.objectify.Key.create(Key.java:39) 
    at com.googlecode.objectify.impl.cmd.LoadTypeImpl.id(LoadTypeImpl.java:77) 

Zapisy dostać umieścić w magazynie danych poprawnie, ponieważ mają one identyfikator, ale jest to na pobieranie danych na zewnątrz.

Muszę więc wrócić do tego, co było wcześniej. Podano w nim here, że można określić generowanie identyfikatora starszego z modyfikacją auto_id_policy w appengine-web.xml. Próbowałem dodanie tego do pliku:

<auto-id-policy>legacy</auto-id-policy> 

Ale to nie działa, albo przynajmniej to może działać, jeśli XSD to sprawdza przed podpór ten tag. Z tego powodu nie można wdrożyć aplikacji.

+0

Witam, napotkałem ten sam problem, co w przypadku projektu, który był nietknięty przez kilka miesięcy. Wystarczy zaktualizować pakiet SDK App Engine z wersji 1.8.1 do nowszej wersji. Mogę potwierdzić, że w moim projekcie, który ma 1.8.1.1 dla App Engine SDK, twój XML sprawdza się poprawnie. –

Odpowiedz

1

jesteśmy świadomi tego problemu i pracujemy nad poprawką.

+0

Poprawka wyjątku lub poprawki dla brakującego tagu XSD? –

+1

jakieś wieści na ten temat? GoogleAppEngine Launcher podaje komunikat o błędzie: argument --auto_id_policy: nieprawidłowy wybór: "starsza wersja" (wybierz "sekwencyjny", "rozproszony") podczas wywoływania go za pomocą --auto_id_policy = dziedzictwo – skurt

+0

Przyszłe odniesienia dla osób, które natknęły się na ten problem: Zaktualizuj Wersja SDK App Engine z wersji 1.8.1 została naprawiona od wersji 1.8.1.1. –

0

Problem wydaje się, że przechodzisz w 0, aby załadować(). Id(). Nie sądzę, że ma to coś wspólnego z rozproszonymi identyfikatorami lub Objectify.

+0

Też tak bym pomyślał. Ale od przejścia do wersji 1.8.1 to robi. Poprzednie wersje działają poprawnie. Gdybym przekazał 0 jako błąd w moim kodzie, to z pewnością zawiodłoby to dla każdej wersji. Zgodziłbyś się? –

+0

Bez zobaczenia kodu wywołującego load(). Id(), jest to naprawdę trudne. – stickfigure

Powiązane problemy