Frage

Ich habe meine Entitätseigenschaft

@GeneratedValue
Long id;

und ich in der Lage ID für die Entität in der Datenbank zu generieren. Meine Frage ist, warum alle Unternehmen werden die gleiche inkrementelle Zahl zu teilen? ist, soll nicht jede Tabelle startet von Null an zu zählen?

War es hilfreich?

Lösung

Es hängt von der zugrunde liegenden Datenbank. Generation ist durch die automatische Voreinstellung und Ruhezustand wählt einer der drei Varianten auf der Datenbank abhängig. Wenn Sie insbesondere ein verwenden möchten, legen Sie es als Attribut von @GeneratedValue

Andere Tipps

Dies ist Datenbank abhängig. JPA-Implementierungen verwenden unterschiedliche ID-Generatoren je nachdem, welche Datenbanksystem sie verwenden. Zum Beispiel mit Oracle wird eine einzige Sequenz erzeugt werden, und diese Sequenz wird verwendet, um IDs für alle Objekttypen zu erzeugen. Standardmäßig wird es nicht eine Sequenz für jede Entität erstellen, da es in der Regel kein Grund zu. Die gleiche Logik gilt auch für andere Datenbanksysteme, die Sequenzen verwenden, anstatt Autoinkrement-Spalt.

Ich bin nicht 100% sicher, ob die JPA-API können Sie dieses Verhalten ändern, aber ich weiß, dass Hibernate Annotations tun. Allerdings haben Sie uns nicht erklärt, welche Datenbank Sie verwenden oder JPA-Implementierung Sie verwenden, die, so kann ich Ihnen nicht viel mehr Rat geben als das.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top