【问题标题】:Difference between GenerationType.AUTO and GenerationType.SEQUENCE using same sequence使用相同序列的 GenerationType.AUTO 和 GenerationType.SEQUENCE 之间的区别
【发布时间】:2017-08-03 18:49:05
【问题描述】:

考虑一个场景: 我正在使用 oracle 11g 并且有一个名为 MYSEQ_SEQ 的序列

如果我在我的 POJO 类中以 2 种不同的方式给出了 id

案例一:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "my_seq" )
@SequenceGenerator(name = "my_seq", sequenceName = "MYSEQ_SEQ", allocationSize = 1)
@Column
private Long id;

案例 2:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_seq" )
@SequenceGenerator(name = "my_seq", sequenceName = "MYSEQ_SEQ")
@Column
private Long id;

我的问题是创建一个新对象会以相同的方式工作吗? 在这种情况下,GenerationType.SEQUENCE 和 GenerationType.AUTO 有什么区别吗?

【问题讨论】:

    标签: hibernate jpa oracle11g hibernate-mapping


    【解决方案1】:

    根据this

    JPA 定义了五种标识符生成策略:

    AUTO - 标识列、序列或表,具体取决于底层数据库

    序列 - 序列

    所以理论上没有区别,因为在您使用 Oracle 的情况下,JPA 提供程序(包括休眠)将创建一个序列,尽管我不确定 @GeneratedValue(strategy = GenerationType.AUTO, generator = "my_seq" ) 是否会被接受。但是,嘿,你可以测试一下,自己看看

    【讨论】:

    • 糟糕,我编辑了我的答案,但它或多或少还是一样的。感谢您的观察
    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2014-04-27
    • 2018-01-15
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多