當我使用JpaSchemaGenerator
工具類時,我遇到了同樣的問題。
當生成一個org.hibernate.dialect.HSQLDialect
(這裏我用一個序列來生成我的唯一ID)的架構,我用下面的休眠特性:
hibernate.id.new_generator_mappings=true
這將導致以下CREATE
聲明:
CREATE TABLE BATCH (
BAT_ID NUMBER(19,0) NOT NULL,
BAT_EXPIRY_DATE TIMESTAMP,
BAT_NUMBER VARCHAR2(255 CHAR),
BAT_MAT_ID NUMBER(19,0),
PRIMARY KEY (BAT_ID)
);
但是,當我在我的實用程序類中使用此相同的屬性來使用org.hibernate.dialect.HSQLDialect
生成架構時,我得到以下CREATE
聲明:
CREATE TABLE BATCH (
BAT_ID BIGINT NOT NULL,
BAT_EXPIRY_DATE TIMESTAMP,
BAT_NUMBER VARCHAR(255),
BAT_MAT_ID BIGINT,
PRIMARY KEY (BAT_ID)
);
這意味着,如果我創建了一個批處理沒有ID,就不會產生這對我和NOT NULL
約束將導致異常。
如果我改變了Hibernate的屬性如下:
hibernate.id.new_generator_mappings=false
然後,它會生成以下CREATE
聲明:
CREATE TABLE BATCH (
BAT_ID BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
BAT_EXPIRY_DATE TIMESTAMP,
BAT_NUMBER VARCHAR(255),
BAT_MAT_ID BIGINT,
PRIMARY KEY (BAT_ID)
);
與Hibernate創建JPA實體時,其中一期工程完美。
*方言已被設置爲org.hibernate.dialect.HSQLDialect *我使用HSQL DB管理器創建了表。只是正常的創建表地址... *我已經手動創建表,而不是通過休眠 *是的,通過entitymanager的持續。 我沒有在我的情況下將ID列設置爲身份 - 只需將其設置爲主鍵。 – calvinkrishy 2010-08-29 23:00:10
對於一些reasone在我的情況下生成的DDL命令是:CREATE TABLE employees(id BIGINT NOT NULL,name VARCHAR(50)NOT NULL,CONSTRAINT PK_EMPLOYEES PRIMARY KEY(id));根本沒有使用身份。 – Alexandr 2013-05-20 07:49:27