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應填寫它
你的數據庫表是如何定義的? – Kayaman
我剛剛編輯了文本並添加了.... – kubrdom