Cómo resolver "La identificación temporal no ha sido reemplazada en el compromiso" con Cayenne

StackOverflow https://stackoverflow.com/questions/4784929

  •  24-10-2019
  •  | 
  •  

Pregunta

Al cometer cambios en un contexto de Apache Cayenne, obtengo una excepción como la siguiente.

org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Sep 06 2010 15:09:38]
Temporary ID hasn't been replaced on commit

¿Por qué ocurre esta excepción?

¿Fue útil?

Solución

Está tratando de cometer un objeto para el que Cayenne no sabe cómo generar una identificación permanente. Esto a su vez generalmente ocurre cuando la tabla subyacente no tiene una clave primaria definida.

Para resolver el problema, haga uno de los siguientes.

  • Agregue una clave principal a la tabla subyacente, ya sea una clave sustituta (nueva columna de ID generada) o una clave natural (combinación de columnas existentes).
  • Establezca su propia identificación permanente en los objetos en cuestión utilizando el PersistentObject.setObjectID() método.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top