我有邮政数据库。我从中创建了实体(作为*.java类),现在,我想创建一个新对象并将其提交给数据库。我希望数据库会自动创建ID。所以我只填写名称、地址等变量,不填写idCustomer。问题是,当数据库中有记录(由另一个应用程序创建,或者只是由SQL INSERT命令创建)然后我运行我的程序时,它会失败,并异常地告诉我:有什么。。。。id=1已被使用。当我再次运行它(在数据库中至少有2条记录)如果再次失败,则使用id=2……以此类推,直到我第n次运行我的程序并且它通过
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 created对象,DB应该填充它
最佳答案
我真蠢。
在运行java程序之前,我使用SQL INSERT命令将一些示例数据放到DB中。我自己设定身份。所以序列不能递增。希望你不要在这个问题上花那么多时间。
关于java - JPA下一个ID值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36840560/