1

我正在尝试为使用 Spring 和 JPA(使用 Hibernate)的应用程序创建一些测试。

我想使用内存数据库,这样我就可以检查一切是否正常,而不必依赖主开发服务器(这是一个旧的 Sybase 安装),并且还可以让我更好地隔离测试功能。

问题是,有很多表被映射@Table("dbname..dbo.someviewname")用于访问其他数据库的视图。因此,我试图将 HSQLDB 与 DBunit 一起使用,但可以理解的是,HSQLDB 不允许创建名称中带有点的表。

我怎样才能对此进行测试?

我是否应该放弃内存中的东西并使用主 Sybase 开发服务器进行测试(冒着毁掉其他开发人员的风险:P)?

4

1 回答 1

0

dbname.dbo.someviewnameHSQLDB 可能提取dbname为目录、dbo模式和somewiewname表名。

HSQLDB 确实允许创建名称中带有点的表。这可以通过将表名视为分隔标识符来完成:

@Table(name="\"dbname.dbo.someviewname\"")

但是您不想使用它,因为 Sybase 的名称处理方式也发生了变化。如果您可以有单独的 orm.xml 用于测试,那么您可以在 orm.xml 中添加以下内容:

    <persistence-unit-defaults>
        <delimited-identifiers/>
    </persistence-unit-defaults>  

它使所有数据库对象名称都被视为分隔标识符。根据您的映射和查询,它最终可以工作,但很可能您会遇到一些问题。可能最好的方法是在映射和/或单独的 Sybase 实例中不使用模式名称进行测试。

于 2012-08-27T17:37:24.527 回答