2013-06-13 20 views
9

Sto utilizzando GAE 1.8.1 e ho riscontrato un problema con Objectify con new scattered ID system. Almeno penso che sia Objectify, non sono sicuro (usando Objectify 4 RC1). Sto ottenendo questo ..Come specificare ID incrementali legacy con 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) 

I record vengono messe nel datastore correttamente come hanno un ID, ma questo è il recupero dei dati fuori.

Quindi per il momento devo tornare a quello che era prima. Indica here che è possibile specificare la generazione dell'ID legacy con la modifica della auto_id_policy in appengine-web.xml. Ho provato ad aggiungere questo al file:

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

Ma non funziona, o almeno potrebbe funzionare se il XSD convalida contro supporta questo tag. Non è possibile distribuire l'app a causa di questo.

+0

Salve, ho riscontrato lo stesso problema di un progetto che è stato mantenuto intatto per diversi mesi. Devi solo aggiornare il tuo SDK App Engine da 1.8.1 a una versione più recente. Posso confermare che sul mio progetto, che ha 1.8.1.1 per il suo SDK App Engine, il tuo XML si convalida correttamente. –

risposta

1

siamo a conoscenza di questo problema e stiamo lavorando su una correzione.

+0

Una correzione per l'eccezione o una correzione per il tag XSD mancante? –

+1

ci sono novità su questo? GoogleAppEngine Launcher sta affermando errore: argomento --auto_id_policy: scelta non valida: 'legacy' (scegli tra 'sequenziale', 'sparsi') chiamandolo con --auto_id_policy = legacy – skurt

+0

Riferimento futuro per le persone che si sono imbattute in questo problema: Aggiorna il tuo Versione SDK App Engine da 1.8.1, questo problema è stato risolto a partire dalla 1.8.1.1. –

0

Il problema sembra essere il passaggio da 0 a load(). Id(). Non penso che questo abbia nulla a che fare con gli ID sparsi o con gli oggetti oggettificati.

+0

L'avrei pensato anch'io. Ma da quando ci si sposta a 1.8.1 lo fa. Le versioni precedenti funzionano bene. Se stavo passando uno 0 come un bug nel mio codice, sicuramente fallirebbe per ogni versione. Sei d'accordo? –

+0

Senza vedere il tuo codice che chiama load(). Id(), è davvero difficile da dire. – stickfigure