我需要檢查應用程序啓動時,當前在DB中使用的數據庫模式和用於以前JOOQ生成模型的模式是否相同。 我試圖用解決方案建議here,發現了一些問題:jOOQ生成的類和實際的數據庫模式的運行時驗證
- 特技查詢所有表:此解決方案不檢查列類型,只有表和字段的名字,但我需要檢查的類型了。
MY_SCHEMA.getTables().equals(create.meta().getTables())
:此處僅檢查模式和名稱,而不是再次檢查列類型。
我試圖使用create.meta().getTables()
中的可用信息並手動進行比較,但遇到了另一個問題。從create.meta()
運行時檢索的生成字段和字段的數據類型在某些情況下不匹配。
實施例是"time" timestamp without time zone DEFAULT now()
字段具有length
,precision
,scale
值,並且不具有在運行時JOOQ字段defaultValue
值,但沒有它們產生JOOQ字段和具有defaultValue
代替。
JOOQ的正確行爲?使用create.meta()
提取的元數據和生成模式的元數據不能用於比較。有沒有其他方法可以正確執行此操作?
對於測試中使用:
的PostgreSQL 9.5.3用JDBC 1208年4月9日的驅動程序,
JOOQ 3.8.2,
爪哇8