Meine Dao-Ebene funktioniert gut mit der MySql. Wenn ich versuche, das gleiche mit dem im Speicher db (HSQLDB) zu testen, kann ich keine Daten persistieren. Meine Entität ist wie folgt definiertHibernate Junit hsqldb - (Strategie = GenerationType.AUTO) funktioniert nicht
public class Api {
@Id
@Column(name = "api_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private int apiId;
Wenn Sie versuchen fortzufahren, wird die ID nicht automatisch generiert. Es wird als null übergeben.
18:05:52.071 [main] DEBUG org.hibernate.SQL - insert into api (api_id, description, version) values (null, ?, ?)
18:05:52.076 [main] DEBUG o.h.e.jdbc.spi.SqlExceptionHelper - could not prepare statement [insert into api (api_id, description, name) values (null, ?, ?)]
Meine Hibernate Eigenschaften sind
Properties properties = new Properties();
properties.setProperty(ApiConstants.HIBERNATE_DIALECT, "org.hibernate.dialect.HSQLDialect");
properties.setProperty(ApiConstants.HIBERNATE_DRIVER_CLASS, "org.hsqldb.jdbcDriver");
properties.setProperty(ApiConstants.HIBERNATE_CONN_URL, "jdbc:hsqldb:mem:apicloud");
properties.setProperty(ApiConstants.HIBERNATE_CONN_USER, "sa");
properties.setProperty(ApiConstants.HIBERNATE_CONN_PWD, "");
properties.setProperty("hibernate.archive.autodetection", "class,hbm");
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
properties.setProperty("hibernate.show_sql", "true");
Schema jedes Mal, wenn die Unit-Test ausgelöst wird, erzeugt wird. Create-Anweisung wird wie folgt ausgegeben.
18:05:51.995 [main] DEBUG org.hibernate.SQL - create table api
(api_id integer generated by default as identity (start with 1),
description varchar(255), version varchar(255), primary key (api_id))
Lassen Sie mich wissen, wenn ich etwas vermisse.
Ihr Code sollte korrekt funktionieren. Welche Versionen von HSQLDB und Hibernate verwenden Sie? Können Sie auch die DEBUG-Protokollierung für org.hibernate aktivieren und nach der Anweisung "CREATE TABLE" für das Api-Modell suchen? Sie sollten sehen, dass die Spalte mit "Identität" erstellt wird - wenn nicht, ist das Ihr Problem. –
Hallo .. Danke für die Antwort .. Meine Hibernate-Version ist 4.3.6.Final und HSQLDB-Version ist 2.2.8. Ich habe auch die create table-Anweisung in der obigen Frage hinzugefügt, und ich konnte sehen, dass die Tabelle mit der Identität generiert wird. Immer noch existiert das Problem. –