# @Id-Annotation



## Babba_BLuBB (2. Mai 2008)

Hallo zusammen,

ich lese mich zur Zeit in Hibernate ein und habe eine Frage zur @Id-Annotation.
Als "Primärschlüssel" kann man auf der Java-Objektebene sowol einen primitiven Datentyp (z.B. long), als auch einen Referenzdatentyp (z.B. Long) verwenden.

Jetzt frage ich mich, was der Unterschied zwischen diesen beiden Varianten ist (sofern es einen gibt).
Ich habe schon in mehrern Büchern nachgelesen, da steht aber nie ein Wort über die Unterschiede.

Grüße und danke.


----------



## Guest (2. Mai 2008)

Long ist nullable, long nicht. 

Ich würde dir empfehlen grundsätzlich die Wrapperklassen wie Long, Integer, Double etc. bei JPA bzw. Hibernate 
zu verwenden und die Constraints bei den entsprechenden Annotationen zu schreiben. 
Damit wird bei Mussfeldern sichergestellt, dass du diese tatsächlich setzt und nicht, dass sie einen Default-Wert wie
0 o.ä. erhalten.
z.B.
	
	
	
	





```
@Entity
@Table(name="PERSON")"
public class Person
{
   @Id
   @GeneratedValue
   @Column(name="ID", updateable=false)
   private Long id;

   @Column(name="AGE", nullable=false)
   private Integer age;

   ... usw
}
```


----------



## Guest (2. Mai 2008)

Ätsch. :shock: Korrektur
	
	
	
	





```
@Table(name="PERSON")
```


----------



## Babba_BLuBB (2. Mai 2008)

OK, hab verstanden.
Vielen Dank für die schnelle Aufklärung


----------

