Tengo una instancia de entidad JPA en la capa de interfaz de usuario web de mi aplicación. Me gustaría saber en cualquier momento si esta entidad ya se ha conservado en la base de datos o si solo está presente en la sesión del usuario.¿Cómo saber si una entidad JPA separada ya ha sido persistente o no?
Sería en la capa de negocio, usaría el método entitymanager.contains (Entity), pero en mi capa de interfaz de usuario creo que necesito un atributo adicional que indique si la entidad se ha guardado o no. ¿Cómo implementar eso? Estoy considerando seguir la opción por el momento:
- un atributo JPA con un valor predeterminado establecido por la base de datos, pero forzaría una nueva lectura después de cada actualización?
- un atributo no JPA configurado manualmente en mi código o configurado automáticamente por JPA?
¿Algún consejo/otras sugerencias?
Estoy usando JPA 1 con la implementación de Hibernate 3.2 y preferiría mantener el estándar.
Absolutamente, quiero saber si mi entidad es nueva.Preferiría utilizar otro campo con un valor predeterminado establecido en la base de datos, ya que no estoy utilizando una estrategia JPA GeneratedValue para la clave primaria (me estoy estableciendo la clave principal con un UUID para la implementación de proveedor de bases de datos cruzadas/compatibilidad con clústeres) – snowflake
@snowflake El problema es que JPA no admite valores generados por la base de datos para atributos no pk, por lo que deberá usar una extensión de proveedor JPA (como '@ org.hibernate.annotations.Generated') o actualizar sus entidades después de persistir , que es feo Me pregunto si usar '@ GeneratedValue' no sería una mejor opción. –
Gracias por tu comentario. Tienes razón, esto es feo, preferiría usar como alternativa un campo establecido en y por mi DAO. – snowflake