我正在尝试为使用Spring和JPA(使用Hibernate)的应用程序创建一些测试。
我想使用内存数据库,以便我可以检查一切是否正常工作而不必依赖主开发服务器(这是一个旧的Sybase安装),并且还允许我更好地隔离测试功能
问题是,有许多表使用@Table("dbname..dbo.someviewname")
映射来访问其他数据库中的视图。
所以,我试图将HSQLDB与DBunit一起使用,但HSQLDB可以理解为不允许在名称中创建带点的表。
我该怎样对其进行测试?
我是否应该放弃内存中的东西并使用主要的Sybase开发服务器进行测试(冒着破坏其他开发人员的风险:P)?
答案 0 :(得分:0)
从dbname.dbo.someviewname
HSQLDB可能会将dbname
作为目录,dbo
作为模式,somewiewname
作为表名。
HSQLDB允许创建名称中带有点的表。这可以通过将表名称作为分隔标识符来完成:
@Table(name="\"dbname.dbo.someviewname\"")
但是你不想使用它,因为那样对于Sybase来说如何处理名称。如果您可以为测试分别使用orm.xml,则可以将以下内容添加到orm.xml:
<persistence-unit-defaults>
<delimited-identifiers/>
</persistence-unit-defaults>
它会将所有数据库对象名称视为分隔标识符。根据您的映射和查询,它最终可以工作,但很可能您将面临一些问题。可能最好的方法不是在映射中使用模式名称和/或在测试中使用单独的Sybase实例。