我的核心项目中有许多实体使用@GeneratedValue。正如我在documentation
中读到的那样使用特殊的单行表来存储全局序列号
在我的数据库中,表已经创建:
CREATE TABLE openjpa_sequence_table
(
id smallint NOT NULL,
sequence_value bigint,
CONSTRAINT openjpa_sequence_table_pkey PRIMARY KEY (id)
)
我的问题是:表中的每个插入都会使用@GeneratedValue注释的实体递增序列的值吗?
select * from openjpa_sequence_table
检索exaclty与select (max) id from one_table
相同的值,这让我觉得我的第一个问题的答案是否定的。
但是,其他表从哪里获取自动递增的id?
问题:我们希望隔离OpenJPA并仅与DB中的存储过程一起使用。当我们想要创建一个SP来插入不同的元素时,我们意识到了这个问题,我怎样才能获得ID?目前,所有ID都是在openjpa_sequence_table中生成的。
提前致谢。
修改的
使用@GeneratedValue的实体之一:
@Entity
@Table(name = "email_address")
public class BlackListedAddress extends BaseEntity implements Serializable {
/**
* The auto-generated primary key.
*/
@Id
@GeneratedValue
@Column(name = "email_id")
private long id;
DB中的这个表:
CREATE TABLE email_address
(
email_id bigint NOT NULL,
address character varying(255) NOT NULL,
CONSTRAINT email_list_pkey PRIMARY KEY (email_id),
CONSTRAINT email_list_unique_text UNIQUE (address)
)
WITH (
OIDS=FALSE
);