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