2016-04-25 40 views
1

我有Postgres DB。我做了它的實體(如* .java類),現在我想創建一個新的對象並將其提交給數據庫。我希望,ID將由DB自動創建。所以我只填寫名稱,地址等變量,我不填寫idCustomer。問題是,當數據庫中有記錄(由另一個應用程序創建,或者簡單地通過SQL INSERT命令),然後運行我的程序時,它會失敗,異常告訴我:something .... id = 1已被使用。當我再次運行它(並在數據庫中至少有2條記錄),如果再次失敗,再次使用id = 2 ...等等,直到我第N次運行我的程序並且它通過JPA下一個ID值

CREATE TABLE "customer" (
"id_customer" SERIAL NOT NULL, 
"surename" char(64) NOT NULL, 
"name" char(64) NOT NULL, 
"dateofbirth" date NOT NULL, 
"gender" char(1) NOT NULL CHECK(gender='m' OR gender='z') 
"email" varchar(64) NOT NULL UNIQUE, 
PRIMARY KEY("id_customer") 
); 

我在Java中如何定義ID

@Id 
@SequenceGenerator(name = "customerSeq", sequenceName = "customer_id_customer_seq", allocationSize = 1) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "customerSeq") 
@Column(name = "id_customer") 
Long idCustomer; 

創建新的對象(不填寫ID),並提交到DB

entitymanager.getTransaction().begin(); 
entitymanager.persist(createdObject); 
entitymanager.getTransaction().commit(); 

我的問題是:如何得到正確的ID,並將它推到DB

或(和好)

怎麼推到數據庫中創建對象,而ID和DB應填寫它

+0

你的數據庫表是如何定義的? – Kayaman

+0

我剛剛編輯了文本並添加了.... – kubrdom

回答

0

我笨。

我使用SQL INSERT命令將一些示例數據放到數據庫中,然後再運行我的java程序。我自己設置ID。所以序列不能增加。希望你不會在這個問題上花太多時間。