2016-03-29 12 views
2

Wenn ich den Primärschlüssel nicht automatisch generieren möchte, möchte ich stattdessen die ID mit der ersten Spalte der Tabelle als Primärschlüssel angeben.@Id Annotation in JPA und Hibernate

2 A 
4 B 
7 D 
13 E 

...

Ich will die erste Spalte 2,4, 7, 13 der Primärschlüssel der Tabelle zu sein. Sollte ich @Id nur für die Annotation verwenden?

@Entity 
public class Code { 
    @Id 
    @Column(unique=true) 
    private int id; 

    ... 
} 

Oder, wenn @Id verwendet wird, wird der Primärschlüssel immer automatisch erzeugt werden, anstatt die erste Spalte verwendet wird, in diesem Fall?

+2

Sie brauchen nicht "unique = true", wenn Sie '@ Id' verwenden. –

Antwort

1

@Id wird nur den Primärschlüssel deklarieren. Es wird keinen generierten Wert einfügen. Wenn Sie @GeneratedValue verwenden, wird der Wert des Feldes generiert.

+0

Soll der Primärschlüssel normalerweise automatisch generiert werden? – user697911

+0

nein, weil in einer Tabelle auch ein nicht automatisch erzeugter Primärschlüssel sein kann – stinepike

0

Ein object id (OID) ist etwas, das eine object eindeutig identifiziert. Innerhalb eines VM ist dies typischerweise der object's Zeiger. In einer relationalen databasetable wird eine Zeile in ihrer Tabelle eindeutig durch ihre primary key identifiziert.

Wenn objects zu einer Datenbank persistierenden Sie eine eindeutige Kennung für den objects benötigen, dies ermöglicht es Ihnen, die object abzufragen, definieren relationships zum object und zu aktualisieren und die object löschen. In JPA ist die Objekt-ID durch die @Id Annotation definiert und sollte der primary key der object's Tabelle entsprechen. Eine object id kann entweder eine natürliche ID oder eine generierte ID sein. Eine natürliche ID ist eine, die in der object auftritt und eine Bedeutung in der Anwendung hat. Beispiele für natürliche IDs sind E-Mail-Adressen, Telefonnummern und Sozialversicherungsnummern. Eine generierte ID (auch bekannt als Ersatz-ID) wird vom System generiert.

In JPA eine @Id kann einfach eine generierte Sequenznummer über die @GeneratedValue Annotation zugewiesen werden.

0

Wenn Sie den Primärschlüsselwert für Ihre Entitäten immer manuell angeben, reicht die Anmerkung @Id.