gpt4 book ai didi

java - 如何为 Oracle 数据库生成唯一序列号

转载 作者:行者123 更新时间:2023-12-02 06:58:17 25 4
gpt4 key购买 nike

我们的应用程序有多个实体,并使用 MySQL 数据库开发。我们所有的实体都扩展一个共同的基础实体。

@MappedSuperclass
public class BaseEntityData implements Serializable
{
/**
* Data identifier (Usually holds Primary Key)
*/
private Long id;

/**
* @return the id
*/
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public Long getId()
{
return id;
}

/**
* @param value the id to set
*/
public void setId(final Long value)
{
this.id = value;
}
}

我们所有的实体都扩展了BaseEntityData,并且一切都在MySQL 数据库上完美运行。在开发过程中,我们没有对 Oracle 数据库进行测试。我们现在想在Oracle数据库上测试不同客户需求的cos,但发现Oracle数据库不会生成主键的序列号,并且有时会生成重复的键。如何修改这个父类(super class)BaseEntityData以便为我们所有的表生成唯一的键。有超过 300 个实体扩展了这个父类(super class)。

最佳答案

少马这个名字是对的。对于 Oracle,您需要创建一个序列并使用它来生成 ID。

注释看起来像这样

@id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ENTITY_SEQUENCE")
@SequenceGenerator(name="ENTITY_SEQUENCE", sequenceName="ENTITY_SEQUENCE")

看起来您将在要扩展的父类(super class)中定义 id。如果是这种情况,请强烈考虑将 ID 移至子类级别。在具有许多对象的大型企业应用程序中,您可能希望对单独的实体使用单独的 ID 序列。

关于java - 如何为 Oracle 数据库生成唯一序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17018691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com