ADF BC: Valor procedente de una Secuencia
Hola.
Hoy os traigo tres formas distintas de establecer el valor de un atributo de una Entity Object al valor de una secuencia de base de datos.
Cambiando el tipo de dato del atributo a DBSequence.
Esta solución consiste en cambiar el tipo de dato del atributo de nuestra Entity Object a DBSequence.
Al realizar este cambio podemos observar en la parte inferior de la pantalla de propiedades se ha habilitado la posibilidad de configurar el nombre de la secuencia de base de datos que deseamos utilizar para dicho atributo.
No genera el valor final de la secuencia hasta que se realiza commit. Por ello si se contribuyen tablas asociadas a la del valor autogenerado pueden encontrarse valores negativos temporales hasta que se realice el commit de los datos.
Programáticamente en la creación de la fila
Esta solución consiste en sobrescribir el método create de una fila y forzar la llamada a la secuencia de base de datos para establecer el valor del campo deseado.
Para ello se debe generar la clase Java que representa la entidad incluyendo el Create Method.
Y seguidamente incluir en el código del método create la llamada a la secuencia de base de datos deseada y asignarle el valor al campo correspondiente de la entidad.
Finalmente es necesario actualizar el atributo de la entidad para que refresque después de la inserción.
Esta opción genera un valor siempre que se comience una operación de inserción en base de datos por lo que si se cancela la operación de inserción, ese valor será un valor perdido puesto que en la próxima inserción se generará el siguiente valor.
Mediante una Groovy Expression
Para esta solución hay que generar primero la clase que define la Entidad (como hicimos en la solución anterior). Y crear un método que obtiene el valor de la secuencia.
Seguidamente editar las propiedades del atributo de la entidad para que obtenga su valor procedente de dicho método mediante una Groovy Expression.
Personalmente nunca he usado esta opción.
Ejemplo desarrollado en JDeveloper 11.1.1.4.
Un saludo :).
Hoy os traigo tres formas distintas de establecer el valor de un atributo de una Entity Object al valor de una secuencia de base de datos.
Cambiando el tipo de dato del atributo a DBSequence.
Esta solución consiste en cambiar el tipo de dato del atributo de nuestra Entity Object a DBSequence.
Al realizar este cambio podemos observar en la parte inferior de la pantalla de propiedades se ha habilitado la posibilidad de configurar el nombre de la secuencia de base de datos que deseamos utilizar para dicho atributo.
Atributo de entidad con Type: DBSequence |
Programáticamente en la creación de la fila
Esta solución consiste en sobrescribir el método create de una fila y forzar la llamada a la secuencia de base de datos para establecer el valor del campo deseado.
Para ello se debe generar la clase Java que representa la entidad incluyendo el Create Method.
Generación de la clase Java que define la Entidad |
Método create de la Entity |
Finalmente es necesario actualizar el atributo de la entidad para que refresque después de la inserción.
Refresco después de inserción |
Mediante una Groovy Expression
Para esta solución hay que generar primero la clase que define la Entidad (como hicimos en la solución anterior). Y crear un método que obtiene el valor de la secuencia.
Método que genera el valor de la DBSequence |
Seguidamente editar las propiedades del atributo de la entidad para que obtenga su valor procedente de dicho método mediante una Groovy Expression.
Groovy expression que invoca a la DBSequence |
Ejemplo desarrollado en JDeveloper 11.1.1.4.
Un saludo :).
Comments
Post a Comment