2012-01-07 10 views

risposta

5

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

unsaved-value (opzionale - il default è un valore "ragionevole"): un valore della proprietà identificatore che indica un'istanza è appena istanziati (salvato), distinguendola da istanze indipendente che sono stati salvati o caricati in una sessione precedente.

Nel tuo esempio, unsaved-value="null" sembra abbastanza inutile, dato che ho il sospetto che il "default ragionevole" per un Long è null.

è più utile per i tipi primitivi (es int), che non possono essere null, e non salvati valore predefinito di 0 può essere indesiderabile in alcune applicazioni (0 essendo un valore numerico perfettamente valido).

+0

chi e quando imposta questo valore non salvato? potresti fare un esempio? – jhegedus

13

E 'spiegato in this brillante articolo:

Il file di mapping Hibernate indica che il campo ID sul Persona è l'ID del database (vale a dire che è la chiave primaria della tabella persona). All'interno del tag id è un attributo, unsaved-value = "null", che indica a Hibernate di utilizzare il campo id per determinare se un oggetto Person ha precedentemente salvato o meno. I framework ORM devono fare questa distinzione per sapere se devono salvare l'oggetto con un'istruzione SQL INSERT o UPDATE. In questo caso, Hibernate presume che il campo ID inizi a zero su nuovi oggetti e venga assegnato quando sono stati salvati per la prima volta .

Inoltre, si può leggere su "unsaved-value" nel libro "Java Persistence con Hibernate":

enter image description here

Problemi correlati