jooq无法在游戏中生成类 - scala

Posted

技术标签:

【中文标题】jooq无法在游戏中生成类 - scala【英文标题】:jooq unable to generate classes in play - scala 【发布时间】:2017-07-18 16:10:17 【问题描述】:

我在 scala play 框架应用程序中使用 jooq,我已从 mariadb 更改为 postgre 9.5.3,我正在尝试为 jooq 生成模型类,但在生成过程中收到错误消息。

在我的生成器设置中我的设置​​与application.conf中的设置相同,奇怪的是应用程序正常启动并且成功创建了hikari连接池,但是jooq生成器说无法访问架构。

来自游戏控制台的日志显示连接正常:

[info] 2017-02-27 22:12:25,670 application - Creating Pool for datasource 'default'
[info] 2017-02-27 22:12:26,156 p.a.d.DefaultDBApi - Database [default] connected at jdbc:postgresql://localhost:5432/footballgladiator
[info] 2017-02-27 22:12:26,377 application - ApplicationTimer demo: Starting application at 2017-02-27T21:12:26.356Z.
[info] 2017-02-27 22:12:27,501 play.api.Play - Application started (Dev)

applicatoin.conf 数据库设置:

  default.driver = org.postgresql.Driver
  default.url = "jdbc:postgresql://localhost:5432/footballgladiator"
  default.username = postgres
  default.password = admin
  default.maximumPoolSize=9

jook 生成器文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.7.0.xsd">
    <jdbc>
        <driver>org.postgresql.Driver</driver>
        <url>jdbc:postgresql://localhost:5432/footballgladiator</url>
        <user>postgres</user>
        <password>admin</password>
    </jdbc>
    <generator>
        <name>org.jooq.util.ScalaGenerator</name>
        <database>
            <name>org.jooq.util.postgres.PostgresDatabase</name>
            <inputSchema>footballgladiator</inputSchema>
            <includes>.*</includes>
            <excludes></excludes>
        </database>
        <target>
            <packageName>generated</packageName>
            <directory>app</directory>
        </target>
    </generator>
</configuration>

生成器错误:

[debug] 2017-02-27 22:06:52,882 o.j.t.LoggerListener - Executing query          : select "pg_catalog"."pg_namespace"."nspname" from "pg_catalog"."pg_namespace"
[debug] 2017-02-27 22:06:52,952 o.j.t.StopWatch - Query executed           : Total: 92.925ms
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener - Fetched result           : +---------------+
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |nspname        |
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : +---------------+
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |pg_toast       |
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |pg_temp_1      |
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |pg_toast_temp_1|
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |pg_catalog     |
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |public         |
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : +---------------+
[debug] 2017-02-27 22:06:53,152 o.j.t.LoggerListener -                          : |...1 record(s) truncated...
[debug] 2017-02-27 22:06:53,153 o.j.t.StopWatch - Finishing                : Total: 293.304ms, +200.378ms
[warn] 2017-02-27 22:06:53,155 o.j.u.AbstractDatabase - No schemata were loaded  : Please check your connection settings, and whether your database (and your database version!) is re
ally supported by jOOQ. Also, check the case-sensitivity in your configured <inputSchema/> elements : [footballgladiator]

【问题讨论】:

【参考方案1】:

啊,我发现了,inputSchema 被命名为 public 而不是 footbalgladiator 这是我的数据库,postgres 有一个名为 public 的模式,你有你的数据库,所以生成器设置应该是

 <database>
        <name>org.jooq.util.postgres.PostgresDatabase</name>
        <inputSchema>public</inputSchema>
        <includes>.*</includes>
        <excludes></excludes>
    </database>

【讨论】:

对于 mysql 用户,inputSchema 将是 INFORMATION_SCHEMA

以上是关于jooq无法在游戏中生成类 - scala的主要内容,如果未能解决你的问题,请参考以下文章

我们是不是有任何库可以从表中生成类中的实体字段?

如何在 Matlab 中生成类的实例并将它们保存在数组中?

Kapt 不在 Instant 应用功能模块中生成类

如何在 jOOQ 中使用 Scala 的字符串插值?

在 SQLite 中生成平均值

安卓游戏某高中生在地铁上被陌生男子袭击