Ich greife mit Spring und Hibernate auf eine SQL-Server 2008 Datenbank zu. Jetzt möchte ich gerne mittels
ein Objekt in der Datenbank speichern. Die dazugehörige Tabelle besitzt eine Identity Spalte die von der Datenbank befüllt wird. Dies habe ich in der domain-Klasse definiert:
Wenn ich jetzt einen Datensatz in die Datenbank einfügen möchte, den es noch nicht gibt, dann ist die ID ja 0, da sie noch nicht von der Datenbank vergeben wurde.
Leider sieht dann das SQL-Statement von Hibernate folgendermaßen aus:
Das "default" führt dazu, das ich von der Datenbank die Fehlermeldung
Wie bekomme ich es hin, das der Datensatz Orgnungsgemäß in der Datenbank gespeichert wird?
P.S.: Ich habe auch schon "GenerationType.IDENTITY" ausprobiert, was zum gleichen Ergebnis führte.
Code:
getHibernateTemplate().saveOrUpdate(object);
ein Objekt in der Datenbank speichern. Die dazugehörige Tabelle besitzt eine Identity Spalte die von der Datenbank befüllt wird. Dies habe ich in der domain-Klasse definiert:
Code:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "USER_ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
Wenn ich jetzt einen Datensatz in die Datenbank einfügen möchte, den es noch nicht gibt, dann ist die ID ja 0, da sie noch nicht von der Datenbank vergeben wurde.
Leider sieht dann das SQL-Statement von Hibernate folgendermaßen aus:
Code:
insert into USER (USER_ID, USER_NAME, AGE) values (default, ?, ?)
Das "default" führt dazu, das ich von der Datenbank die Fehlermeldung
Code:
java.sql.SQLException - DEFAULT or NULL are not allowed as explicit identity values.
Wie bekomme ich es hin, das der Datensatz Orgnungsgemäß in der Datenbank gespeichert wird?
P.S.: Ich habe auch schon "GenerationType.IDENTITY" ausprobiert, was zum gleichen Ergebnis führte.