【发布时间】:2017-01-23 19:48:29
【问题描述】:
我目前正在为 Liquibase 创建一个扩展以支持 Cassandra。它运行良好,但我想添加一些不错的功能。
当变更集有先决条件时,我想抛出 NotSuppportedException() 之类的东西。问题是目前,底层 JDBC 包装器返回一个封闭的 ResultSet,这会导致在访问所述 ResultSet 时引发异常。
对于语句,我实现了自己的生成器。先决条件有类似的东西吗?或者一种覆盖现有 ForeignKeyExistsPrecondition 实现的方法?从类扩展并覆盖检查方法不起作用(即使放在包 liquibase.precondition.ext 中)。
谢谢!
【问题讨论】:
-
大部分前置条件似乎都在使用SqlStatements,如果你实现了自己的Database类,你可能不支持这些Statement?
-
是的,谢谢,如果 ForeignKeyPrecondition 使用 SqlStatement,这将起作用,但它使用的是 SnapshotGeneratorFactory,我很遗憾无法覆盖
-
好的,我明白了,前提条件不像更改那样具有优先级,我不确定当您注册具有相同 tagName 的自定义类时 PreconditionFactory 会发生什么。你试过吗?似乎 preconditionFactory 不检查已注册的标签,而只是覆盖已注册的类。
-
IIRC 我没有尝试使用完全相同的名称,只是附加了 Cassandra。但是我尝试了很多东西,也许它没有用。不过会再试一次,然后返回结果。谢谢!
-
如果我使用完全相同的 FQDN,它可以工作。不是一个真正干净的解决方案,但它有效。感谢您的想法!