gpt4 book ai didi

java - Mysql 的 Oracle 序列类似物

转载 作者:行者123 更新时间:2023-11-29 19:11:15 24 4
gpt4 key购买 nike

我使用 Hibernate 4 和 Oracle 11g。这首二重奏有一个方便的特点。我可以简洁地指出如下:

@Entity
@Table(name = "APPLICATION", schema = "PRODUCTION")
public class ApplicationVersionModel {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUCTION.SEQUENCE_NEW")
@SequenceGenerator(name = "PRODUCTION.SEQUENCE_NEW", schema = "PRODUCTION", sequenceName = "PRODUCTION.SEQUENCE_NEW", allocationSize = 1)
@Column(name = "ID")
@XmlTransient
@Getter @Setter private Long id;

并描述数据库中的序列:

CREATED         27.02.17
LAST_DDL_TIME 27.02.17
SEQUENCE_OWNER PRODUCTION
SEQUENCE_NAME SEQUENCE_NEW
MIN_VALUE 1
MAX_VALUE 9999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 20
LAST_NUMBER 957101
PARTITION_COUNT
SESSION_FLAG N
KEEP_VALUE N

这样的组合将允许我在多线程环境中使用该应用程序。同时访问的用户将获得一个唯一的 ID,不会有冲突的威胁。 The documentation明确声明此功能。

从这个意义上来说,Hibernate 和 Mysql 是否有类似的功能?任何建议都将受到高度赞赏。非常感谢。

最佳答案

如果使用序列为单个表生成唯一的 id,则 MySQL 的 auto_increment将提供相同的功能。

已接受的答案 How to annotate MYSQL autoincrement field with JPA annotations SO中的问题描述了如何在hybernate中使用MySQL的auto_increment:

To use a MySQL AUTO_INCREMENT column, you are supposed to use an IDENTITY strategy:

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

Which is what you'd get when using AUTO with MySQL:

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

Which is actually equivalent to

@Id @GeneratedValue
private Long id;

关于java - Mysql 的 Oracle 序列类似物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43063920/

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