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.

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

  • fdw2.0/fundeweb2.0/gt/gt-sqe_column_no_id.txt
  • Última modificación: 11/02/2022 13:21
  • por JUAN MIGUEL BERNAL GONZALEZ