hsqldb 不支持列的 columnDefinition 属性

Posted

技术标签:

【中文标题】hsqldb 不支持列的 columnDefinition 属性【英文标题】:hsqldb not supporting columnDefinition attribute for the column 【发布时间】:2012-02-17 14:14:58 【问题描述】:

我已经有 hsql db 用于测试,并添加了几个表。

我正确更新了 .dtd 和 .xml 文件,但由于 dbunit 测试用例抛出“NoSuchTableException”而无法运行 junits。

在 DAO 类中,我为罪魁祸首表添加了以下属性。

@Column(name = "keyword_id", columnDefinition = "int REFERENCES master_keyword(keyword_id)")

一旦我删除了 columnDefinition 属性,junit 就可以正常工作了。我知道 columnDefinition 是特定于数据库的,这是否意味着我们不应该在运行 junit 时使用它?

我花了很多时间在这上面。问题已解决,但对此有何想法?

【问题讨论】:

【参考方案1】:

如果您的单元测试使用注释来自动创建数据库表,那么显然columnDefinition 属性被考虑在内:这就是它的目的。

因此,如果您在列定义中具有特定于数据库的内容,对于另一个数据库而不是您正在使用的数据库,那么显然它不会工作。

看起来你想在这里定义一个外键约束。那你为什么不使用 OneToOne 或 ManyToOne 关联呢?

【讨论】:

我想避免代码中的那个约束(因为某种原因),我只是想在这里有一个定义,并在表本身上有一个约束。它在 devo/prod 中运行良好,但 junits 失败。

以上是关于hsqldb 不支持列的 columnDefinition 属性的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 HSQLDB 中有虚拟列

如何使用 UUID 作为 HSQLDB 列的默认值

从具有 BIT 列的 HSQLDB 表中进行选择

HSQLDB 神秘异常消息:“不支持功能”

hsqldb 2.3.2 jdbc驱动不支持ResultSet.first()?

HSQLDB:重复的列名,不支持的内部操作:类型,强制转换字符无效