2012-01-07 16 views

Respuesta

5

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html

unsaved-value (opcional - por defecto un valor "sensible"): un valor de la propiedad identificador que indica una instancia está recién instanciados (guardar), distinguiéndola de instancias separadas que fueron guardados o cargados en una sesión previa.

En su ejemplo, unsaved-value="null" parece bastante inútil, ya que sospecho que el "default sensible" para un Long es null.

Es más útil para los tipos primitivos (por ejemplo int), que no pueden ser null, y el no salvo-valor predeterminado de 0 puede ser indeseable en algunas aplicaciones (0 ser un valor de número perfectamente válido).

+0

quién y cuándo se establece este valor no salva? ¿podría dar un ejemplo? – jhegedus

13

Se explica en this brillante artículo:

El archivo de mapeo de Hibernate indica que el campo ID en persona es el ID de base de datos (es decir, es la clave principal de la tabla persona). Dentro de la etiqueta id hay un atributo, unsaved-value = "null", que indica a Hibernate que use el campo id para determinar si un objeto Person tiene guardado previamente o no. Los marcos ORM deben hacer esta distinción para saber si deben guardar el objeto con una declaración INSERT o UPDATE de SQL . En este caso, Hibernate asume que el campo de identificación comienza nulo en los objetos nuevos y se asigna cuando se guardan primero en .

Además, se puede leer acerca de "no salva-valor" en el libro "Java Persistence con Hibernate":

enter image description here

Cuestiones relacionadas