"Id no puede ser cero" – GoogleJsonResponseException 400 Petición incorrecta

Parece que estoy recibiendo un error al intentar recuperar la lista utilizando el punto final en GAE. El error es el siguiente:

04-08 01:01:30.145: I/System.out(14650): com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 04-08 01:01:30.145: I/System.out(14650): { 04-08 01:01:30.145: I/System.out(14650): "code": 400, 04-08 01:01:30.145: I/System.out(14650): "errors": [ 04-08 01:01:30.145: I/System.out(14650): { 04-08 01:01:30.145: I/System.out(14650): "domain": "global", 04-08 01:01:30.145: I/System.out(14650): "message": "java.lang.IllegalArgumentException: id cannot be zero", 04-08 01:01:30.145: I/System.out(14650): "reason": "badRequest" 04-08 01:01:30.145: I/System.out(14650): } 04-08 01:01:30.145: I/System.out(14650): ], 04-08 01:01:30.145: I/System.out(14650): "message": "java.lang.IllegalArgumentException: id cannot be zero" 04-08 01:01:30.145: I/System.out(14650): } 

Este es el método que estoy intentando utilizar en mi punto final:

 @SuppressWarnings({ "cast", "unchecked"}) public List<Comercio> listComercio() { EntityManager mgr = getEntityManager(); List<Comercio> result= new ArrayList<Comercio>(); try { Query query = mgr.createQuery("select c from Comercio c", Comercio.class); for (Object obj : (List<Object>) query.getResultList()) { result.add((Comercio) obj); } } finally { mgr.close(); } return result; } } 

Esta es la clase de entidad:

 @Entity public class Comercio{ @Id private Long id; private String title; private String url; private String NEWSTYPE; public Comercio() { } public Long getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public void setNewstypeid(String newstypeid) { this.NEWSTYPE = newstypeid; } public String getNewstypeid() { return NEWSTYPE; } } 

Esta es la AsyncTask de mi proyecto android:

 public class AsyncDatastoreArticles extends CloudAsyncTask { AsyncDatastoreArticles(Home activity) { super(activity); } @Override protected void doInBackground() throws IOException { // TODO Auto-generated method stub List<Comercio> list = endpoint.listComercio().execute().getItems(); if (list != null) { //DO SOMETHING } } } 

Por favor necesito ayuda.

Gracias por adelantado.

Supongo que la razón es que la identificación no se está estableciendo. Puede utilizar el siguiente código para establecer ID generado automáticamente en su clase de entidad.

 @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; 

También asegúrese de no guardar ningún método setId () en su entidad en ese caso.

Se utiliza en este tema aquí como Long , pero sólo quería señalarlo una vez más:

Utilice Mayúsculas Long , como valores predeterminados por defecto en cero.

Según el mensaje de error, puede haber un registro en su base de datos con el valor Id como 0, que causará este error desde JPA. Porque según JPA, Id no debe ser cero.

Compruebe la base de datos una vez.

  • Mejor manera de manejar eventos en Android
  • ¿Cómo evito esta espera ocupada?
  • Abstracción con Java en Android
  • ¿Cómo comprobar con gracia si un recurso bruto no existe?
  • Retrofit post utilizando Firebase
  • Tratando de verificar si existe un archivo en el almacenamiento interno
  • Java / Android espera hasta que haya terminado un hilo antes de ejecutar un nuevo método
  • AndroidHttpClient y DefaultHttpClient
  • Obtener referencia a Thread Object desde su ID
  • ¿Qué algoritmo de mezcla de color se utiliza para oscurecer un color?
  • Modo de lanzamiento "single top" de Android y método onNewIntent
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.