2017-06-13 104 views

回答

0

你必须在以下指定的选项: http://docs.oracle.com/javaee/6/api/javax/persistence/GenerationType.html

在我们的应用中使用命名的序列表。当然,您必须创建表格并插入带有序列标识和序列号(要生成的标识的起点)的记录。然后,您可以自动增加该值按照下面的文章中列出的指示: http://www.oracle.com/technetwork/middleware/ias/id-generation-083058.html#table

要在该示例工作表通过明确地创建表,你可以做到以下几点:

create table ${your.schema}.ID_GEN (
    ID_NAME varchar2(40), 
    ID_VAL long 
); 
Grant… 

INSERT INTO ${your.schema}.ID_GEN (ID_NAME, ID_VAL) 
VALUES (INV_GEN, 1); 
+0

尼尔,谢谢。我知道了。 '@Id @TableGenerator(名称= “TABLE_GEN”,表= “SCHEME.SERVICE_SEQ”,pkColumnName = “SEQ_NAME”,pkColumnValue = “TB.ID”,而valueColumnName = “SEQ_VALUE”,allocationSize = 1) @GeneratedValue (strategy = GenerationType.TABLE,generator =“TABLE_GEN”)' 但现在,我有一个问题。 **在插入对象之前,你知道如何获得这个序列吗?在插入到db之前,我需要响应客户端的这个id。** – Braian

+0

这个id是在EntityManager.flush上生成的。有关检索ID,请参阅以下文章:https://stackoverflow.com/questions/9732453/jpa-returning-an-auto-generated-id-after-persist。如果你不坚持它们,你不会为实体生成ID。例如,您可能会从REST调用中检索数据,将其映射到实体,然后检查数据库以确定该实体是否已存在。如果是这样,并且“新”Entity.equals(existingEntity),你会选择不坚持“新”实体。你不会想自动生成一个ID。 – neal

相关问题