Hi Lukas,

My Oracle Version is 11g 11.1.0.7.0

the Keys class is empty:


import javax.annotation.Generated;

import org.jooq.impl.AbstractKeys;


/**
 * This class is generated by jOOQ.
 *
 * A class modelling foreign key relationships between tables of the
LOCATIONS2 schema
 */
@Generated(value    = "http://jooq.sourceforge.net";,
           comments = "This class is generated by jOOQ")
@SuppressWarnings({"unchecked"})
public class Keys extends AbstractKeys {

        // IDENTITY definitions

        // UNIQUE and PRIMARY KEY definitions

        // FOREIGN KEY definitions

        /**
         * No instances
         */
        private Keys() {}
}

I've got one error in the generation log which looks unrelated:

DEBUG [main] (JooqLogger.java:142) - Adding unique key        :
UNIQUE_PLAN_LOCATION (LOCATIONS2.LOCATIONPLAN.FK__LOCATION_KEY)
DEBUG [main] (JooqLogger.java:142) - Executing query          : select
"cc1"."CONSTRAINT_NAME" "fk_name", "cc2"."CONSTRAINT_NAME" "uk_name",
"cc1"."TABLE_NAME" "fk_table", "cc2"."TABLE_NAME" "uk_table",
"cc1"."COLUMN_NAME" "fk_column" from "SYS"."ALL_CONSTRAINTS" join
"SYS"."ALL_CONS_COLUMNS" "cc1" on "cc1"."CONSTRAINT_NAME" =
"SYS"."ALL_CONSTRAINTS"."CONSTRAINT_NAME" join
"SYS"."ALL_CONS_COLUMNS" "cc2" on ("cc2"."CONSTRAINT_NAME" =
"SYS"."ALL_CONSTRAINTS"."R_CONSTRAINT_NAME" and "cc2"."POSITION" =
"cc1"."POSITION") where ("SYS"."ALL_CONSTRAINTS"."OWNER" =
'LOCATIONS2' and "cc1"."OWNER" = 'LOCATIONS2' and "cc2"."OWNER" =
'LOCATIONS2' and "cc1"."CONSTRAINT_NAME" = (select
"SYS"."ALL_CONSTRAINTS"."CONSTRAINT_NAME" from
"SYS"."ALL_CONS_COLUMNS" join "SYS"."ALL_CONSTRAINTS" on
"SYS"."ALL_CONS_COLUMNS"."CONSTRAINT_NAME" =
"SYS"."ALL_CONSTRAINTS"."CONSTRAINT_NAME" where
("SYS"."ALL_CONSTRAINTS"."CONSTRAINT_TYPE" = 'R' and
"SYS"."ALL_CONS_COLUMNS"."OWNER" = 'LOCATIONS2' and
"SYS"."ALL_CONS_COLUMNS"."TABLE_NAME" = "cc1"."TABLE_NAME" and
"SYS"."ALL_CONS_COLUMNS"."COLUMN_NAME" = "cc1"."COLUMN_NAME"))) order
by "fk_name" asc, "cc2"."POSITION" asc
DEBUG [main] (JooqLogger.java:142) - Statement executed       : Total: 14.371ms
ERROR [main] (JooqLogger.java:268) - Error while fetching relations
java.sql.SQLException: ORA-01427: Unterabfrage für eine Zeile liefert
mehr als eine Zeile

        at 
oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
        at 
oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
        at 
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
        at 
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
        at 
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
        at 
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431)
        at 
oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
        at 
org.jooq.impl.AbstractResultProviderQuery.executeLazy(AbstractResultProviderQuery.java:125)
        at 
org.jooq.impl.AbstractResultProviderQuery.execute(AbstractResultProviderQuery.java:68)
        at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:90)
        at 
org.jooq.util.oracle.OracleDatabase.loadForeignKeys(OracleDatabase.java:182)
        at 
org.jooq.util.AbstractDatabase.getRelations0(AbstractDatabase.java:424)
        at 
org.jooq.util.AbstractDatabase.getRelations(AbstractDatabase.java:308)
        at 
org.jooq.util.DefaultColumnDefinition.getPrimaryKey(DefaultColumnDefinition.java:141)
        at 
org.jooq.util.AbstractTableDefinition.getMainUniqueKey(AbstractTableDefinition.java:71)
        at org.jooq.util.DefaultGenerator.generate(DefaultGenerator.java:460)
        at org.jooq.util.GenerationTool.main(GenerationTool.java:142)
        at org.jooq.util.GenerationTool.main(GenerationTool.java:101)

the DDL statement (reengineered from SQL Developer)

CREATE TABLE "LOCATIONS"."MTRLFRMTRLRDRTMPLT"
  (
    "PK__MATERIALORDERTEMPLATE_ID" NUMBER(20,0) NOT NULL ENABLE,
    "FK__MATERIAL_NO"              VARCHAR2(256 BYTE),
    "ADDTOAREA"                    VARCHAR2(1 BYTE),
    "PK_ID"                        NUMBER(20,0) NOT NULL ENABLE,
    "IGNOREEXISTINGMATERIAL"       VARCHAR2(1 BYTE),
    "QUANTITY"                     NUMBER(10,0),
    PRIMARY KEY ("PK__MATERIALORDERTEMPLATE_ID", "PK_ID") USING INDEX
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL
65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
"LOCATIONS_DATA" ENABLE,
    CONSTRAINT "MTRLFRMTRLRDRTMPLT_MTRL_MTRL" FOREIGN KEY
("FK__MATERIAL_NO") REFERENCES "LOCATIONS"."MATERIAL" ("PK_NO") ON
  DELETE
    SET NULL ENABLE,
    CONSTRAINT "MTRLFRMTRLRDRTMPLT_MTRLRDRTMPL" FOREIGN KEY
("PK__MATERIALORDERTEMPLATE_ID") REFERENCES
"LOCATIONS"."MATERIALORDERTEMPLATE" ("PK_ID") ON
  DELETE CASCADE ENABLE
  )
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "LOCATIONS_DATA" ;
CREATE INDEX "LOCATIONS"."IDX_MTRLFRMTRLRDRTMPLT_MTRLRDR" ON
"LOCATIONS"."MTRLFRMTRLRDRTMPLT"
  (
    "PK__MATERIALORDERTEMPLATE_ID"
  )
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "LOCATIONS_INDEX" ;
CREATE INDEX "LOCATIONS"."IDX_MTRLFRMTRLRDRTMPLT_MTRL_MT" ON
"LOCATIONS"."MTRLFRMTRLRDRTMPLT"
  (
    "FK__MATERIAL_NO"
  )
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "LOCATIONS_INDEX" ;
CREATE UNIQUE INDEX "LOCATIONS"."SYS_C005603" ON
"LOCATIONS"."MTRLFRMTRLRDRTMPLT"
  (
    "PK__MATERIALORDERTEMPLATE_ID", "PK_ID"
  )
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "LOCATIONS_DATA" ;


that was a little bit messy but hopefully it will help you.

cheers,

Manfred


2011/5/30 Lukas Eder <[email protected]>:
> Hi Manfred,
>
> This works fine for me both in my Oracle XE development database, and
> in a "full-fledged" 11g database, so I'm guessing it's not a version
> issue here (unless you have some other version than 10g or 11g?
>
> Can you do these things for me:
>
> - Provide me with the generated Keys.java class (if it exists)
> - Provide me with any errors in your generation log, that you might have 
> gotten
> - Provide me with the generated Mtrlfrmtrlrdrtmplt.java class
> - Provide me with the definition of the MTRLFRMTRLRDRTMPLT table
> (CREATE TABLE ... statement, including all key specifications)
>
> Cheers
> Lukas
>
> 2011/5/30 Manfred Schäfer <[email protected]>:
>> Hi,
>>
>> i'm generating source code with jooq 1.5.9. The debug output tells me,
>> that JOOQ has correctly identified the primary keys:
>>
>> DEBUG [main] (JooqLogger.java:142) - Adding primary key       :
>> SYS_C0013879 (LOCATIONS.MTRLFRMTRLRDRTMPLT.PK__MATERIALORDERTEMPLATE_ID)
>> DEBUG [main] (JooqLogger.java:142) - Adding primary key       :
>> SYS_C0013879 (LOCATIONS.MTRLFRMTRLRDRTMPLT.PK_ID)
>>
>>
>> But in the generated code all primary and foreign keys are missing.
>> The generation properties file conatins the line
>>
>> generator.generate.relations=true
>>
>> If i'm using the same libs with my toy XE Database, the generation
>> works as expected!?
>>
>> regards,
>>
>> Manfred
>>
>

Attachment: Mtrlfrmtrlrdrtmplt.java
Description: Binary data

Reply via email to