====== 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//