java - Mysql 的 Oracle 序列类似物

标签 java mysql oracle hibernate

我使用 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/

相关文章:

java - 在 Byte Buddy 中动态设置 @FieldProxy 字段

mysql - 如何用MySQL编写多表查询?

sql - Oracle SQL中的脚本错误

oracle - 如何让 "Microsoft ODBC for Oracle"驱动程序在 Windows 7 中工作

mysql - 如何让 MySQL 查看 ID 列以检查具有相同 ID 的另一行是否在不同列中具有值?

Windows 7 上的 Python 3.5.3 和 Oracle 11.2 : cannot locate oracle include files

java - fragment 销毁后的 fragment 对象; GC什么时候收集它们?

Java泛型 - 从方法返回声明类型的子类型

java - 无法通过 BufferedReader 读取文本文件

mysql - 如何在 phpmyadmin 中从 mysql 获取 2 avg()