====== Utilizar Secuencias de BBDD en campos (columnas) que no son ID ====== En JPA solo se pueden utilizar secuencias en campos que forman parte de la clave primaria. [[fdw2.0:fundeweb2.0:gt:generar_valores_para_las_claves_primarias|Generar valores para las claves primarias]] 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 [[https://www.baeldung.com/jpa-embedded-embeddable|clases embebidas]]. ---- --- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 11/02/2022 13:07//