Java 如何在HyperSQL中支持SqlServer的“.”?

Java 如何在HyperSQL中支持SqlServer的“.”?,java,sql-server,unit-testing,hsqldb,Java,Sql Server,Unit Testing,Hsqldb,tl;dr:我正在尝试对一些SqlServer查询进行单元测试,这些查询声明了数据库名称,但它们在HyperSql中似乎不起作用 我们在生产中使用Sql Server,我尝试使用HyperSQL作为单元测试的数据库。我正在尝试测试一个创建SQL查询的类,因此不可以删除数据库,因为由真实数据库解析查询是测试的一部分 查询应该以SELECT*FROM EntAsdfDb007..Data_表的形式创建,但如果愿意,我们可以使用模式名“db” 根据我对SqlServer的SELECT格式的理解,它允许

tl;dr:我正在尝试对一些SqlServer查询进行单元测试,这些查询声明了数据库名称,但它们在HyperSql中似乎不起作用

我们在生产中使用Sql Server,我尝试使用HyperSQL作为单元测试的数据库。我正在尝试测试一个创建SQL查询的类,因此不可以删除数据库,因为由真实数据库解析查询是测试的一部分

查询应该以SELECT*FROM EntAsdfDb007..Data_表的形式创建,但如果愿意,我们可以使用模式名“db”

根据我对SqlServer的SELECT格式的理解,它允许您指定数据库名称,后跟模式名称。此外,还可以删除数据库的名称并对其进行推断

在HyperSqlDb中,我能够创建模式“db”并在其中创建必要的表,并且能够在该模式中创建表,但即使使用.setDatabaseName设置了数据库名称,我也无法使用数据库名称进行查询。我得到的例外是:

Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: ENTASDFDB007

需要明确的是:我正在对一个类进行单元测试,该类使用SQL,如SELECT*FROM EntAsdfDb007..Data_表。我正试图为单元测试目的设置一个HyperSql实例,但HyperSql似乎拒绝使用语法。

这是不可能的


不能将HyperSQL更改为接受非标准命名方案。

这是可能的。HSQLDB每个数据库都有一个目录。默认情况下,目录名称是公共的,您可以对其进行更改

ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007
然后,您可以使用访问表

SELECT * FROM EntAsdfDb007.db.Data_Table

有没有办法让它从EntAsdfDb007.db.Data_表中接受SELECT*呢?我不这么认为。来自SQL标准,即catalog.schema.table。据我所知,HSQLDB不支持目录,只支持schemas.catalog谢谢!我需要一个名字,这将进一步帮助我。为什么不使用SQL Server Express或SQL Server Developer Edition进行单元测试?@Brandon它必须是可以在JUnit测试中设置、托管和控制的东西,所以它基本上意味着它需要某种基于Java的数据库。如果有帮助的话,我可以切换到或类似的应用程序,但本地应用程序或多或少是不可能的。