Oracle JPA GenerationType.AUTO with generator 要求"hibernate_sequence"



我试图在Oracle JPA中使用定义的序列生成,以及GenerationType。AUTO:

@Id
@SequenceGenerator(name = "MY_GEN_NAME", sequenceName = "MY_SQ_NAME")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "MY_GEN_NAME")
@Column(name = "ID", nullable = false)
private Long id;

运行hibernate验证后抛出错误:

Schema validation: missing sequence [hibernate_sequence]

我猜,它忽略了我的MY_GEN_NAME并试图使用该全局序列进行id生成。

当我切换到GenerationType.SEQUENCE,它使用SequenceHiLoGenerator,它的工作很好。

为什么会发生这种情况,是否有可能使GenerationType.AUTO与Oracle给定的序列一起工作(可能切换到其他db)?

AUTO对JPA提供者说,"选择您想要的",并且在这种情况下它不会使用"generator"属性。

如果你想使用SEQUENCE,那么将策略设置为SEQUENCE !这样它就会使用你已经定义的序列定义

虽然Hibernate -sequence-on-oracle-generatedvaluestrategy-generationtype-auto建议这可以工作,但对于某些版本的Hibernate来说似乎是错误的,请参阅hh -10656。

最新更新