En JPA solo se pueden utilizar secuencias en campos que forman parte de la clave primaria.
Con el nuevo componente es.um.atica.jpa.listeners.SequenceGeneratorListener (org.umu.atica.jpa.listeners.SequenceGeneratorListener para FundeWeb 1.5), ahora podemos obtener el valor de una secuancia de BBDD y asignarlo a una propiedad (columna) de una entidad de JPA.
Solo tenemos que configurar un @EntityListeners en la entidad e indicar con la secuencia a utilizar con @SequenceGenerator donde tengamos la anotación @Column.
Ejemplo:
package es.um.atica.prueba.entities; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import es.um.atica.jpa.listeners.SequenceGeneratorListener; @EntityListeners(SequenceGeneratorListener.class) @Entity @Table( name = "PRUEBA_SECUENCIAS", schema = "PORTALFUNDEWEB" ) public class PruebaSecuencias { private String id; private Long sec1; ... @SequenceGenerator(name = "myGenSec1", schema = "PORTALFUNDEWEB", sequenceName = "PRUEBA_SEC1_SEQ") @Column( name = "SEC1", length = 19, nullable = false ) public Long getSec1() { return sec1; } ...
Se puede usar como tipo para el campo, cualquier tipo numérico de Java, incluso tipos primitivos. Tambien se puede usar en clases embebidas.
— JUAN MIGUEL BERNAL GONZALEZ 11/02/2022 13:07