es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problemas con las columnas CHAR en la migración de la base de datos de DB2 a Oracle 19C.

Estoy trabajando en una aplicación de backend que se ejecuta en el servidor de aplicaciones JBOSS EAP 7 (JEE7) cuya base de datos debe migrarse de DB2 a Oracle 19c. Específicamente, esta aplicación utiliza el marco de persistencia de Java (JPA 2.1, Hibernate 5.1.2) para acceder a la base de datos y me encuentro con un problema que no ocurre cuando la aplicación está conectada a la base de datos de DB2 y sí ocurre cuando la aplicación está conectada a la base de datos de Oracle. Más específicamente, el problema está en las sentencias SELECT por clave primaria cuando el campo de clave primaria es de tipo CHAR (9). Permíteme explicar: para localizar un registro en una tabla específica de la base de datos de Oracle cuya clave primaria es una columna de tipo CHAR (9) y el valor que estoy tratando de localizar tiene 8 posiciones alfanuméricas, solo recupero el registro si ingreso un carácter en blanco en la novena posición. Por otro lado, esta circunstancia no ocurre cuando la aplicación está conectada a la base de datos de DB2. Por lo tanto, me pregunto si alguien más ha tenido este problema. Además, menciono que este problema que he descrito no ocurre si hago la consulta con un cliente de Oracle tipo SQLDeveloper. Por último, adjunto el mapeo de la entidad JPA que estoy utilizando:

@Id
@Column(name = "POLISSA_SUBM", unique = true, nullable = false, length = 9)
public String getPolissaSubm() {
    return this.polissaSubm;
}

También agrego la definición de la columna en cuestión en la base de datos de Oracle.
enter image description here

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Problema con las sentencias SELECT por clave primaria en Oracle DB al utilizar JPA y Hibernate

    Soy un experto en TI especializado en Oracle, Hibernate, Java-EE-7 y JPA-2.1. Estoy trabajando en una aplicación de backend que se ejecuta en el servidor de aplicaciones JBOSS EAP7 (JEE7). La base de datos de esta aplicación se está migrando de DB2 a Oracle 19c. La aplicación utiliza el marco de persistencia de Java (JPA 2.1, Hibernate 5.1.2) para acceder a la base de datos.

    Me he encontrado con un problema cuando la aplicación está conectada a la base de datos de Oracle. Específicamente, el problema surge en las sentencias SELECT por clave primaria cuando el campo de clave primaria es de tipo CHAR(9). Para localizar un registro en una tabla específica de la base de datos de Oracle cuya clave primaria es una columna de tipo CHAR(9) y el valor que se busca tiene 8 posiciones alfanuméricas, el registro solo se recupera si se ingresa un carácter en blanco en la novena posición.

    El problema no ocurre cuando la aplicación está conectada a la base de datos DB2. Además, el problema no ocurre si la sentencia SELECT se realiza con un cliente Oracle tipo SQLDeveloper.

    Aquí está el mapeo de la entidad JPA que se está utilizando:

    @Id
    @Column(name = "POLISSA_SUBM", unique = true, nullable = false, length = 9)
    public String getPolissaSubm() {
       return this.polissaSubm;
    }
    

    Aquí está la definición de la columna en cuestión en la base de datos de Oracle:

    ![Definición de columna de Oracle][1]

    ¿Alguien más ha encontrado un problema similar? Cualquier ayuda o consejo sería muy apreciado.

Comments are closed.