Java – ID generation of hibernate, liquibase and HSQLDB

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
分享
二维码
< <上一篇
下一篇>>