2011-10-03 13 views
7

He desarrollado una aplicación de mantenimiento del cliente. Los usuarios pueden modificar los detalles del cliente a través de la interfaz web. Quiero manejar el siguiente escenario:Hibernate Versiones automáticas

  1. User 1 cargas customer1 detalles.
  2. User 2 cargas customer1 detalles.
  3. User 1 cambia y guarda customer1 's .
  4. User 2 solo cambia y ahorra la edad de customer1.

En el escenario anterior, finalmente base de datos contiene 's antiguo nombre y la nueva era debido User 2 sobrescribe User 1' customer1 actualización s. Estoy usando Hibernate. Escuché que Hibernate Automatic Versioning lo admite. Si alguien sabe cómo manejar esto, por favor avíseme.

Respuesta

12

Sólo tiene que añadir un campo anotado con @Version:

public class Customer { 

@Id 
private Long id; 

@Version 
private Long version; 

// rest of the fields, etc. 

} 

Leer this artículo para más información.

+0

Uso SpringJDBC sobre cualquier ORM en mi proyecto Java. Pero necesito agregar algo de la funcionalidad @Version de Hibernate, para evitar alguna situación como la descrita allí. ¿Entonces quizás me sugieras la realización de JDBC? – MeetJoeBlack

+0

El término general para este enfoque se llama _optimistic locking_. Puede encontrar alguna guía aquí: http://stackoverflow.com/a/8880896/309683 – Behrang

0

una solución, cuando la segunda solicitud tiende a actualizar los datos de primera comprobar si se actualiza después de detalles cargado, si es así, aumentar la excepción y permitir al usuario cambiar después de detalles de carga de nuevo, puede utilizar sello de tiempo de modificación de comparar

Cuestiones relacionadas