Developmentcookbook
  • Introduction
  • Herramientas de Desarrollo
  • PlantUML en NetBeans
  • JPA
    • AUTOINCREMENTABLE SECUENCE
    • Autoincrementable mediante Tabla
    • Agregar DataSource /JNDI
    • Sincronizando EntityManager /con base datos
  • NoSQL
    • Couchdb
      • Instalacion_couchdb
    • MongoDB
      • Optimizar mongodb
      • mongodb 4.0
      • MongoDB vs RDBM
      • Instalar mongodb
  • Apache Tomcat10
    • Tomcat con Jakarta EE
    • UberJar
  • SQL Server
    • SQL Server Con NetBeans
    • SQL Server Command Line
    • Sql Migrar desde hoja de calculos
    • Cambiar contraseƱa de usuario sa
    • Azure Data Studio
  • Kazam
  • Ubuntu
    • Desintalar un paquete
    • Activar la virtualizacion en Ubuntu
    • Crear acceso directo
    • Deshabilitar el splash screen en el grub ubuntu
    • Optimizar Google Chrome
    • ZRAM EN UBUNTU
    • Formatear usb con varias particiones
    • Crear usb Live persistente de ubuntu
    • Controlar mouse con raton
  • I-Android
    • 1.1- InstalarAndroid Studio
    • 1.2-Crear proyecto
    • 1.4-Configurar dispositivo Android
      • III. Emulador Android Studio
        • 3.1-Instalar el Emulador de Android Studio
        • 3.2-Crear AVD ( emulador Android Studio)
        • 3.3 Instalar KVM
        • 3.4 Virtualizacion para el Emulador de Android Studio
          • 3.5 Activar Virtualizacion en Ubuntu
            • 3.5.1 Instalar acelerador kvm
          • 3.6 Configure el emulador de Android
      • Otras opciones no Fundamentales
        • 1.3-Mejorar rendimiento de Android Studio
          • 1.3.1 Permisos
        • 1.1.1 Cambiar Colores
        • 1.1.1 Optimizar Android
  • II.Emulador Genymotion
    • 2.0 Instalar Emulador Genymotion
    • 2.1 Error con redes y VirtualBox
    • 2.2 Configurar ADB
    • 2.1 Crear Dispositivos
    • 2.4 Corregir el error al ejecutar ABD
    • 2.5 Integrar Emulador Genymotion con Android Studio
  • Apple IOS
  • IV.Flutter
    • 4.0 Links
    • 4.1 Instalar Flutter
    • 4.2 Configurar Editor
    • 4.3 Primera Aplicacion en Flutter
    • 4.4 Ejecutar con Genymotion
    • 4.5 Genymotion Devices con Android Studio
    • 4.6 Agregar dependencias
    • 4.7 Path
    • 4.8 Crear un build para Android e Ios desde consola
  • V. Visual Studio Code
    • Java Support
    • Microprofile Visual Studio
    • Soporte Git
    • 5.1 Instalar
    • 5.2 Configurar Flutter
    • 5.3 Proyecto Flutter en Visual Studio Code
    • 5.4 Ejecutar Proyecto con Genymotion
    • 5.5 Launch Emulator
      • 5.6 Git
  • VI. DiseƱar aplicaciones Flutter con pencil
  • VII. Flutter WebView
    • main.dart
    • WebViewInFlutter.dart
  • VIII. Fluter con RestFull API
    • 8.0 Enlaces
    • 8.1 Proyecto ejemplo
  • IX. Flutter Push Notificationes
    • 9.0 Enlances
    • Untitled
  • X. Flutter Test
    • 10.0 Enlaces
  • XI. Flutter Mockito
    • 11.0 Enlaces
  • XII. CodeMagic CI/CD Continuos Development
    • 12.0 gitlab
    • 12.1 Build Fase
    • 12.2 Testing Fails
    • 12.3 TestMagic
    • 12.4 Generar para IOS
    • 12.5 Firmar para IOS
  • XIII. Cambiar Icono Lanzador
  • XIV. Firmar APP
  • XV. Reducir el tamaƱo
  • Dart
    • Instalacion_dart
  • Flutter con MongoDB
  • Heroku
  • Vaadin
  • NodeJS
    • Instalar_nodejs
    • Angular IDE
    • NetBeans Angular
    • Instalar PrimeNG
    • Instalar AngularCI
    • Instalar FontAwesome
  • VueJS
  • Jenkins
    • Requerimientos
    • Configurar el Sistema
    • Login
    • Dashboard
    • Plugins
    • Global Tool Configuration
    • Crear proyecto maven
    • Configurar el archivo pom.xml
    • Inicializar mercurial
    • Ejecutar mercurial server
    • Crear Tarea Jenkins
      • General
      • Configurar origen del codigo fuente
      • Disparadores de ejecuciones
      • Entorno de ejecución
      • Pasos previos
      • Proyecto
      • Pasos posteriores/Cobertura
      • Propiedades del proyecto
      • Acciones para Ejecutar despuĆ©s
    • PMD
    • Ver la integración continua
      • Modulos
      • Bajar el artefacto de cada corrida
      • Tendencia
    • Editemos el Test
    • Test de Cobertura
    • Plugins Jenkins para NetBeans
  • MVC con JEE8
    • Introduccion mvc
    • Mvc learn
    • mvc con facelets
    • mvc con jnoqsl
  • Microservicios
    • Introduccion a microservicios
    • Crear un microservcios
    • Cliente del Microservicio
  • NetBeans Platform
  • Markdown
    • texto expandible
  • Android
    • Git
  • Selenium Testing
  • Zoom en Ubuntu 20.04
Powered by GitBook
On this page

Was this helpful?

  1. JPA

Autoincrementable mediante Tabla

PreviousAUTOINCREMENTABLE SECUENCENextAgregar DataSource /JNDI

Last updated 3 years ago

Was this helpful?

Referencia Libro

Se usa mediante la creación de una tabla que manejara los autoincrementable para cada tabla.


CREATE TABLE id_gen (
gen_name VARCHAR(80),
gen_val INTEGER,
CONSTRAINT pk_id_gen
PRIMARY KEY (gen_name)
);
INSERT INTO id_gen (gen_name, gen_val) VALUES ('PEOPLE_GEN', 0);
INSERT INTO id_gen (gen_name, gen_val) VALUES ('HISTORIAL_GEN', 0);



  create table PEOPLE(
   PEOPLEID NUMBER NOT NULL,
     DESCRIPCION VARCHAR(100)  ,
     "FECHA" DATE,
      CONSTRAINT PEOPLEPK PRIMARY KEY (PEOPLEID)
    );

Definimos la entidad

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.peopleinmotion.horizonreinicioremotoejb.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;

/**
 *
 * @author avbravo
 */
@Entity
@Table(name = "PEOPLE")
@NamedQueries({
   @NamedQuery(name = "PEOPLE.findAll", query = "SELECT p FROM People p"),
   @NamedQuery(name = "PEOPLE.findByPEOPLEId", query = "SELECT p FROM People p WHERE p.PEOPLEID = :PEOPLEID"),
   @NamedQuery(name = "PEOPLE.findByDescripcion", query = "SELECT p FROM People p WHERE p.DESCRIPCION = :DESCRIPCION")})
public class People implements Serializable {

    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation


    @TableGenerator(name = "PEOPLE_GEN",
            table = "ID_GEN",
            pkColumnName = "GEN_NAME",
            valueColumnName = "GEN_VAL",
            pkColumnValue = "PEOPLE_GEN",
            initialValue = 10000,
            allocationSize = 100)
    @GeneratedValue(generator = "PEOPLE_GEN")
    @Id
   
    @Basic(optional = false)
     @NotNull
    @Column(name = "PEOPLEID")
    private Integer PEOPLEID;

    @Column(name = "DESCRIPCION")
    private String DESCRIPCION;
    
    @Column(name="FECHA")
       @Temporal(TemporalType.TIMESTAMP)
    private Date FECHA;

    public People() {
    }

    public People(Integer PEOPLEID) {
        this.PEOPLEID = PEOPLEID;
    }

    public Date getFECHA() {
        return FECHA;
    }

    public void setFECHA(Date FECHA) {
        this.FECHA = FECHA;
    }
    
    

    public Integer getPEOPLEID() {
        return PEOPLEID;
    }

    public void setPEOPLEID(Integer PEOPLEID) {
        this.PEOPLEID = PEOPLEID;
    }

    public String getDESCRIPCION() {
        return DESCRIPCION;
    }

    public void setDESCRIPCION(String DESCRIPCION) {
        this.DESCRIPCION = DESCRIPCION;
    }

    
   

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (PEOPLEID != null ? PEOPLEID.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // PEOPLEx: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof People)) {
            return false;
        }
        People other = (People) object;
        if ((this.PEOPLEID == null && other.PEOPLEID != null) || (this.PEOPLEID != null && !this.PEOPLEID.equals(other.PEOPLEID))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.peopleinmotion.mavenproject1.PEOPLE[ PEOPLEID=" + PEOPLEID + " ]";
    }

}

Definir el repositorio

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.peopleinmotion.horizonreinicioremotoejb.repository;

import com.peopleinmotion.horizonreinicioremotoejb.entity.People;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author avbravo
 */
@Stateless
public class PeopleFacade extends AbstractFacade<People> {

    @PersistenceContext(unitName = "com.people-inmotion_horizonreinicioremotoejb_ejb_1.0-SNAPSHOTPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public PeopleFacade() {
        super(People.class);
    }
    
    public List<People> findByDescripcion(String descripcion) {
        Query query = em.createNamedQuery("PEOPLE.findByDescripcion");
        return query.setParameter("descripcion",descripcion).getResultList();
    }

   

  
    
}

En el controller

   People people = new People();   
//            em.getTransaction().begin();

           people.setDESCRIPCION(JsfUtil.generateUniqueID());
            people.setFECHA(DateUtil.fechaHoraActual());
           
            peopleFacade.create(people);