Java – ID generation of hibernate, liquibase and HSQLDB
•
Java
I created a table with liquibase:
<createTable tableName="employees"> <column name="id" type="bigint"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(50)"> <constraints nullable="false"/> </column> </createTable>
Generate the following SQL DDL query:
CREATE TABLE employees (id BIGINT NOT NULL,name VARCHAR(50) NOT NULL,CONSTRAINT PK_EMPLOYEES PRIMARY KEY (id));
Corresponding entity:
@Entity @Table(name="employees") public class EmployeeAccessProperty ... @Id @GeneratedValue public long getId() { return id; } ...
Now, when I try to save it through the JPA implementation, generate an SQL query to insert data:
Hibernate: insert into employees (id,name) values (default,?) 2013-05-20T14:29:22.525+0700 WARN sql Error: -5544,sqlState: 42544 2013-05-20T14:29:22.526+0700 ERROR DEFAULT keyword cannot be used as column has no DEFAULT
I expect hibernate to select the best policy based on the provider when I do not specify the ID generation policy I don't understand why ID generation attempts to use default values I'm not sure which party is responsible for the error: Hibernate, liqubase or HSQLDB
What can I do to solve the problem? Please help me
Solution
You did not tell the database that the primary key must be generated automatically Create the table this way:
CREATE TABLE employees (id BIGINT GENERATED BY DEFAULT AS IDENTITY,CONSTRAINT PK_EMPLOYEES PRIMARY KEY (id));
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码