实际上,这里的SOMETHING_SEQ
是您在Hibernate配置中配置的某个序列的名称。hibernate_sequence
是数据库中的序列名称。在配置中,它应该类似于以下内容:
<sequence-generator name="SOMETHING_SEQ"
sequence-name="hibernate_sequence"
allocation-size="<any_number_value>"/>
您可以通过使用注解完全跳过此配置。然后,您的@SequenceGenerator
注解需要提供更多参数。以下是一个例子。
@SequenceGenerator(name="SOMETHING_SEQ", sequenceName="hibernate_sequence", allocationSize=10)
例如,多个实体类可能会像下面这样做:
@Entity
public class Entity1 {
@Id
@SequenceGenerator(name = "entity1Seq", sequenceName="ENTITY1_SEQ", allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity1Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
@Entity
public class Entity2 {
@Id
@SequenceGenerator(name = "entity2Seq", sequenceName="ENTITY2_SEQ", allocationSize=10)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entity2Seq")
@Column(name = "ID", nullable = false)
private Long id;
...
...
}
hibernate-seq
,当你让 Hibernate 生成它时,你不需要提供任何值。即使你提供了某个值,它也会被覆盖。 - Adeel Ansari