Konfigurieren Sie JPA, damit PostgreSQL den Primärschlüsselwert generiert

Also unser Projekt verwenden Sie die PostgreSQL-Datenbank, und wir verwenden JPA zur Bedienung der Datenbank.
Wir haben die Entitäten aus der Datenbank mit automatischer Schöpfer in Netbeans 7.1.2.

Nach kleinen änderungen unsere Primärschlüssel-Werte werden wie folgt beschrieben:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idwebuser", nullable = false)
private Integer idwebuser;

Das problem ist, dass jetzt die Anwendung nicht flexibel, denn wenn wir ändern Sie die Datenbank direkt mit SQL oder einem anderen tool) statt, der durch das Java-app - der Generierte Wert ist niedriger als die tatsächlichen Datenbank-ID-Wert - und so hat man Fehler bei der Erstellung neuer Entitäten.

Gibt es eine Möglichkeit, dass der PPV konnte nur lassen Sie die Datenbank generiert die ID automatisch zu, und dann erhalten Sie es nach dem Prozess?
Oder was wäre eine bessere Lösung?
Danke.

BEARBEITEN
Genauer gesagt:
Wir haben eine Tabelle der Benutzer und mein problem ist, dass mit jeder Art von Strategie generationtype, der PPV ist das einfügen einer neuen Entität mit einer bestimmten durch den generator id. Das ist für mich falsch, denn wenn ich änderungen an der Tabelle auf meine eigene, neue Einträge hinzufügen, die GeneratedValue für die Anwendung ist niedriger als die aktuelle ID - was führt uns zu der Ausnahme mit dupliziert-ID.
Können wir es beheben ;)?

einen kurzen Hinweis auf die Antwort
Es war eine kleine Lüge von meiner Seite, da haben wir einen PG-Admin -> Ansicht den ersten 100 Zeilen und Zeilen bearbeitet von dort statt mit select. SOWIESO, es stellt sich heraus, dass dieser editor irgendwie überspringt der Prozess der Aktualisierung der ID und so auch in der DB, wenn wir schreiben eine ordnungsgemäße FÜGEN Sie es AUSGEFÜHRT wird, mit falschen ID! So war es im Grunde mehr ein problem des Editors, die wir verwendet als die Datenbank und die Anwendung...

nun funktioniert es sogar mit @GeneratedValue(strategy=GenerationType.IDENTITY)

Kommentar zu dem Problem
Bedeutet dies, dass die JPA ist nicht mit dem PostgreSQL-Sequenz? Was ist die definition der Spalte in der Tabelle? Ist, dass ein serial oder einfach nur ein `integer Kommentarautor: a_horse_with_no_name
Wir sind mit serial-Feld geben. Ich beschreibe das problem mehr in der wichtigsten Frage, @a_horse_with_no_name Kommentarautor: Atais
Also es bedeutet, JPA ist nicht mit der entsprechenden Sequenz? Das ist seltsam. Kommentarautor: a_horse_with_no_name
Auch bei tests, haben wir jetzt über 17 Zeilen, und wir verwenden: @SequenceGenerator(name="pk_sequence",sequenceName="entity_id_seq") @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence") Und wir haben gerade einen Fehler Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.die Persistenz.Ausnahmen.DatabaseException Internal Exception: org.postgresql.util.PSQLException: FEHLER: doppelter Schlüsselwert verletzt unique-constraint "webuser_idwebuser_pk" Detail: Schlüssel (idwebuser)=(14) existiert bereits. zu, So scheint es, etwas ist immer noch falsch. Kommentarautor: Atais
Es ist ein Kampf in der Folge Verwendung. Offenbar nicht alle inserts sind mit der gleichen Strategie, wie Sie zum generieren der PK. Kommentarautor: a_horse_with_no_name

InformationsquelleAutor der Frage Atais | 2012-08-06

Schreibe einen Kommentar