我希望 jOOQ 基于我提供的库架构 xml 文件(而不是基于 db 连接)自动生成代码。如果我更改了 liquibase xml 文件中的某些内容,则更改将反映在数据库中,但我无法生成自动生成的新代码。我必须运行两次mvn干净编译,以便jOOQ了解更改。
我pom.xml的发电机部分是这样的。请帮助:
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.16.3.xsd">
<jdbc>
<driver>org.postgresql.Driver</driver>
<url>${spring.datasource.url}</url>
<user>${spring.datasource.username}</user>
<password>${spring.datasource.password}</password>
</jdbc>
<generator>
<database>
<name>org.jooq.meta.extensions.liquibase.LiquibaseDatabase</name>
<name>org.jooq.meta.postgres.PostgresDatabase</name>
<properties>
<!-- Specify the classpath location of your XML, YAML, or JSON script. -->
<property>
<key>scripts</key>
<value>liquibase-outputChangeLog.xml</value>
</property>
<!-- Whether you want to include liquibase tables in generated output
- false (default)
- true: includes DATABASECHANGELOG and DATABASECHANGELOGLOCK tables -->
<property>
<key>includeLiquibaseTables</key>
<value>true</value>
</property>
<!-- Properties prefixed "database." will be passed on to the liquibase.database.Database class
if a matching setter is found -->
<!-- The property "changeLogParameters.contexts" will be passed on to the
liquibase.database.Database.update() call (jOOQ 3.13.2+).
See https://www.liquibase.org/documentation/contexts.html -->
<property>
<key>changeLogParameters.contexts</key>
<value>!test</value>
</property>
</properties>
<inputSchema>public</inputSchema>
</database>
</generator>
</configuration>
通过在“液化数据库”之外添加“后
记数据库”
,您只需覆盖该数据库的“速移数据库”
配置即可
请查看jOOQ的
LiquibaseDatabase
的留档。它提到脚本
属性应该描述迁移文件的类路径位置,而不是相对路径位置,例如。
<!-- Specify the classpath location of your XML, YAML, or JSON script. -->
<property>
<key>scripts</key>
<value>/database.xml</value>
</property>
(注意开头的斜线)。从jOOQ 3.16.5开始,它解决了Liquibase本身的不兼容更改(参见#13031),您现在可以使用相对路径以及附加的<code>rootPath</code>规范,这是Liquibase 4.0之后所必需的:
<!-- Specify the root path, e.g. a path in your Maven directory layout -->
<property>
<key>rootPath</key>
<value>${basedir}/src/main/resources</value>
</property>
<!-- Specify the relative path location of your XML, YAML, or JSON script. -->
<property>
<key>scripts</key>
<value>database.xml</value>
</property>
虽然
LiquibaseDatabase
可以在数据库简单时帮助加快速度,但只要您使用供应商特定的功能(存储过程、数据类型等),这种方法就不再可行。在实际的 PostgreSQL 数据库上运行迁移,然后从该数据库生成代码会更好。您可以使用测试容器来实现这一点,如本博客文章中所述。
我在构建过程中使用org.jooq.util.DefaultGenerator来生成jOOQ类来表示我的数据库模式。 当应用程序运行时,模式可能会在应用程序不知道的情况下更改。此类更改可能与已生成的代码兼容,也可能与已生成的代码不兼容。 如何在运行时检测生成的代码是否对特定模式仍然有效? 我正在寻找类似于布尔值stillValid=new SchemaValidator(存在的GeneratedC
问题内容: 我在构建过程中使用来生成jOOQ类来表示我的数据库模式。 当应用程序运行时,架构可能会在应用程序不知道的情况下发生更改。这样的更改可能与已经生成的代码兼容,也可能与之不兼容。 如何在运行时中检测生成的代码是否仍然在特定模式下有效? 我正在寻找类似的东西 问题答案: 使用org.jooq.Meta的jOOQ 3.0解决方案 在即将到来的jOOQ 3.0中,可以通过新对象(通过功能请求#1
对于多个数据库(和数据库服务器),我有完全相同的数据库定义。我如何告诉Jooq使用与我创建的连接到DB的“连接”相同的数据库? 示例(对于MySQL): jdbc:mysql://localhost:3306/tsm-我的开发数据库(tsm),用于生成代码 所有3个数据库都具有相同的定义、相同的表、索引等。TSM one是我们的应用程序使用的标准。 也许我应该使用DSL。使用(连接、设置)而不是?
问题内容: 我有一个页面,其中发生了许多耗时的功能。我想做的是在过程的每个步骤完成后,更新网页以使用户知道刚刚完成的步骤。本质上,用户提交查询,然后服务器查询数据库,处理数据,绘制图像并在页面上显示结果。我想让网页说出该功能执行的步骤。它会说“先查询”然后“正在处理” …等等。 伪: 我已经研究过使用Ajax来更新页面而不重新加载它,但是根据我的简单理解(对Ajax零经验),客户端将向服务器请求文
本周我开始在一些我正在做的项目中使用Maven,我使用Eclipse和m2e插件。我一直在研究它,但我找不到编译和打包的方法(据我所知,我可以做清洁,生成源,测试和安装)。如何用M2E实现这一点?
我是Android Studio的新手,所以我面临一些问题。我正在寻找一种如何干净地项目的方法。 在Eclipse中,我会做<代码>项目-