【问题标题】:Jooq code generator warns 'ignroing foreign key'Jooq 代码生成器警告“忽略外键”
【发布时间】:2016-04-01 17:21:06
【问题描述】:

我使用此脚本生成架构

DROP SCHEMA IF EXISTS test_schema CASCADE;
CREATE SCHEMA test_schema;
SET search_path TO test_schema;

CREATE TABLE accounts
(
  user_id              SERIAL PRIMARY KEY,
  user_name            TEXT      NOT NULL,
  user_email           TEXT      NOT NULL,
  UNIQUE (user_name),
  UNIQUE (user_email)
);

CREATE TABLE sessions
(
  session_id          TEXT PRIMARY KEY,
  user_id             INT4      NOT NULL REFERENCES accounts (user_id),
  session_created_at  TIMESTAMP NOT NULL DEFAULT current_timestamp,
  session_deleted_at  TIMESTAMP NOT NULL DEFAULT 'infinity'
);

然后我用这个 schema.xml 文件配置了代码生成器

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
    <!-- Configure the database connection here -->
    <jdbc>
        <driver>org.postgresql.Driver</driver>
        <url>jdbc:postgresql://localhost:7777/mydb</url>
        <user>username</user>
        <password>password</password>
    </jdbc>

    <generator>
        <database>
            <name>org.jooq.util.postgres.PostgresDatabase</name>
            <inputSchema>test_schema</inputSchema>
        </database>

        <generate>
        </generate>

        <target>
            <packageName>com.jooq.gen</packageName>
            <directory>../gen</directory>
        </target>
    </generator>
</configuration>

从命令行运行代码生成器后,我注意到了这个警告信息

Apr 01, 2016 11:48:47 AM org.jooq.tools.JooqLogger info
INFO: Adding foreign key       : sessions__sessions_user_id_fkey (test_schema.sessions.user_id) referencing accounts_pkey
Apr 01, 2016 11:48:47 AM org.jooq.tools.JooqLogger warn
WARNING: Ignoring foreign key     : sessions__sessions_user_id_fkey (test_schema.sessions.user_id) referencing accounts_pkey references a schema out of scope for jooq-meta: null
Apr 01, 2016 11:48:47 AM org.jooq.tools.JooqLogger warn
WARNING: Ignoring foreign key     : sessions__sessions_user_id_fkey (test_schema.sessions.user_id) referencing accounts_pkey references a schema out of scope for jooq-meta: null

虽然我DON'T到目前为止使用生成的java类有任何问题,我想知道为什么jooq生成器发出这个警告以及由于忽略外键而导致的后果.

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    这个想法是,对于扩展多个模式的数据库设计,将代码生成器设置为不生成所有此类模式可能是一个错误,应该让用户意识到这一点。如果代码生成器的范围内没有其他架构,外键导航方法(例如SessionsRecord.fetchParent(SESSIONS_USER_ID_FKEY))将无法实现。

    就是这样。因此,您可以放心地忽略该消息。日志级别可能是a bit excessive

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-21
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2014-09-09
      • 2017-08-13
      • 2020-01-23
      相关资源
      最近更新 更多