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.

¿Cómo hago que el código JOOQ codegen funcione con Oracle Edition-Based Redefinition?

Estoy trabajando en un proyecto con una base de datos Oracle en la que hemos decidido habilitar la Redefinición basada en ediciones. También estamos utilizando jooq-codegen para crear objetos Java basados en los objetos que hemos creado en la base de datos.

He leído la documentación de jooq-codegen, pero tengo problemas para encontrar una forma de hacer que JOOQ funcione con las ediciones de Oracle. Normalmente utilizaría una sentencia alter session set edition= para conectarme a la edición correcta, pero no encuentro una forma de hacer esto con jooq-codegen.

¿Existe alguna forma de hacer consultas de inicialización con jooq-codegen, o tal vez incluso una forma de especificar una edición con jooq-codegen? Espero haber pasado por alto algo, ya que no encuentro esta información en la documentación.

No creo que sea algo relevante, pero estoy utilizando Maven y esto se ejecutará en Jenkins.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Usando JOOQ-Codegen con Oracle Editions

    Como experto en tecnología de la información especializado en Java, Oracle, Maven, JOOQ y JOOQ-codegen-maven, entiendo el problema que estás enfrentando al trabajar en un proyecto con una base de datos Oracle que utiliza Edition-based Redefinition. Aunque JOOQ-Codegen es una herramienta poderosa para crear objetos Java basados en objetos de base de datos, puede que no sea fácil integrarlo con las ediciones de Oracle.

    Después de revisar la documentación de JOOQ-Codegen, encontraste que no hay una manera directa de especificar una edición utilizando JOOQ-Codegen. Normalmente, podrías usar una sentencia alter session set edition=<alguna edición=""> para conectarte a la edición correcta, pero no encuentras una forma de hacer esto con JOOQ-Codegen.

    Para superar este problema, podrías intentar usar la propiedad initSQLs en Maven. Esta propiedad te permite ejecutar sentencias SQL antes de la fase de generación de código. Podrías usar esta propiedad para ejecutar la sentencia alter session antes de generar los objetos Java utilizando JOOQ-Codegen.

    Por ejemplo, podrías agregar la siguiente configuración en tu archivo pom.xml de Maven:

    <build>
      <plugins>
        <plugin>
          <groupid>org.jooq</groupid>
          <artifactid>jooq-codegen-maven</artifactid>
          <version>${jooq.version}</version>
          <executions>
            <execution>
              <id>generate-jooq-sources</id>
              <phase>generate-sources</phase>
              <goals>
                <goal>generate</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <jdbc>
              <driver>oracle.jdbc.driver.OracleDriver</driver>
              <url>jdbc:oracle:thin:@//localhost:1521/orclpdb1</url>
              <user>myuser</user>
              <password>mypassword</password>
            </jdbc>
            <generator>
              <name>org.jooq.codegen.JavaGenerator</name>
              <database>
                <name>org.jooq.meta.oracle.OracleDatabase</name>
                <inputschema>MY_SCHEMA</inputschema>
                <includes>.*</includes>
                <excludes></excludes>
              </database>
              <generate>
                ...
              </generate>
              <target>
                ...
              </target>
            </generator>
            <properties>
              <property>
                <key>initSQLs</key>
                <value>alter session set edition=<alguna edición>;</value>
              </property>
            </properties>
          </configuration>
          <dependencies>
            ...
          </dependencies>
        </plugin>
      </plugins>
    </build>
    

    Al agregar la propiedad initSQLs en la configuración de JOOQ-Codegen, puedes ejecutar la sentencia alter session antes de iniciar el proceso de generación de código. De esta manera, JOOQ-Codegen puede funcionar sin problemas con las ediciones de Oracle.

    Espero que esto te ayude a resolver tu problema. Avísame si tienes alguna otra pregunta.

Comments are closed.