En realidad, aquí el SOMETHING_SEQ
es el nombre de la secuencia que ha configurado alguna parte en tu configuración de hibernación Y hibernate_sequence
es el nombre de la secuencia en la base de datos. En la configuración se vería algo como a continuación,
<sequence-generator name="SOMETHING_SEQ"
sequence-name="hibernate_sequence"
allocation-size="<any_number_value>"/>
Puede omitir completamente esta configuración mediante el uso de la anotación. Entonces su anotación @SequenceGenerator
necesitaría proporcionar algunos parámetros más. A continuación está el ejemplo.
@SequenceGenerator(name="SOMETHING_SEQ", sequenceName="hibernate_sequence", allocationSize=10)
Por ejemplo, múltiples clases de entidad haría algo así a continuación,
@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;
...
...
}
Gracias. Pero en mi caso, ¿cómo está hibernate proporcionando mi id? Como cuando guardo mi entidad con un valor nulo para mi Identificación larga, mágicamente se inserta automáticamente. ¿Es a través de alguna tabla especial, o usando esa hibernate_sequence? O..? – JavaRocky
Usando el 'hibernate-seq', y por supuesto cuando dijiste Hibernate para generarlo, no debes proporcionar ninguno. O incluso si proporciona algún valor por ejemplo, ese valor se sobrescribirá. –
¿Estás diciendo que varias entidades comparten esta misma secuencia de hibernación? – JavaRocky