Die Datenbank kam nicht nativ generierten Identitätswert
Ich bin mit IBM DB2-V 9.1.0.356. Ich bin mit DB2-JDBC-Treiber der version 9.7.
Ich bin mit der Verwendung dieser Technologien für meine Anwendung.
Spring MVC, Hibernate, DB2, Websphere
In meinem Create Table-Skript; ID-Spalte generiert wird, als:
ID BIGINT GENERATED BY DEFAULT AS IDENTITY
In Java-Entity-Klasse seinen konfiguriert als:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column( name = "id", nullable = false )
Wenn ich speichert und Objekt durch den Aufruf dieser durch hibernate:
*.save(persistentObject);
Daten gespeichert. Ich habe aber folgende Ausnahme:
org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:90)
Hinweis: Meine Anwendung konfiguriert ist, die beiden Server auf verschiedenen Maschinen. Von einer Maschine kann ich succefully Daten speichern; von anderen aber ich habe oben genannten Ausnahme.
- Diese app server-Maschinen arbeiten mit der gleichen Datenbank oder hat jede Instanz Ihre eigene DB?
- arbeiten mit derselben Datenbank.
- Sie verwenden die JDBC-Type-4-Treiber oder keine systemeigenen DB2-Treiber?
- Ich bin mit zwei Gläser für die DB2-Treiber. 1: db2jcc_license_cu.jar 2: db2jcc.jar. Ich weiß nicht, die richtige version, aber ich denke, der 9.7.
- So dass Sie nicht haben, DB2-Client installiert? "Typ 4" bedeutet native Java nicht nur eine Brücke zu "machine code" Datenbank-Treiber...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Tatsache, dass diese Werke auf einem WebSphere-server und schlägt auf eine andere, obwohl Sie beide eine Verbindung zu derselben Datenbank deutet darauf hin, dass es ein Problem mit der version des JDBC-Treibers. Ich würde überprüfen, die erste.
Den oben genannten Ausnahme kann auch auftreten, wenn die @id annotiert Eigenschaft zugeordnet Spalte Dosis keine Unterstützung für die automatische Generierung von id.
d.h.
mit
könnte das problem lösen.
Stellen Sie sicher, dass während der Erstellung Ihrer Tabelle ein id-Feld sollte markiert sein, als auto-increment und verwenden Sie dann