Java 在为SQL Server编写查询时,是否可以使用hsqldb?

Java 在为SQL Server编写查询时,是否可以使用hsqldb?,java,sql,sql-server,hsqldb,in-memory-database,Java,Sql,Sql Server,Hsqldb,In Memory Database,我被指派为查询类(与数据库交互的类)编写单元测试用例。这些类正在调用我必须在内存数据库中运行的.sql脚本文件 这些.sql脚本文件具有Microsoft sql Server函数(如FIRST\u VALUE()),或者在另一种情况下,使用函数scopeIndex()执行插入查询和选择查询,返回新生成的主键 下面给出了脚本文件的示例。当我试图在我的HSQLDB(内存数据库)上运行它们时,这两种情况给我带来了一个错误。有什么建议可以帮助我克服这个挑战吗?有没有其他内存中的数据库不会给我这个问题

我被指派为查询类(与数据库交互的类)编写单元测试用例。这些类正在调用我必须在内存数据库中运行的.sql脚本文件

这些.sql脚本文件具有Microsoft sql Server函数(如
FIRST\u VALUE()
),或者在另一种情况下,使用函数
scopeIndex()
执行插入查询和选择查询,返回新生成的主键

下面给出了脚本文件的示例。当我试图在我的HSQLDB(内存数据库)上运行它们时,这两种情况给我带来了一个错误。有什么建议可以帮助我克服这个挑战吗?有没有其他内存中的数据库不会给我这个问题

UserDetailsSequenceId是自动生成的

INSERT INTO UserDetails( UserLogin,UserName,UserPassword)
VALUES(?, ?, ?)

Select DISTINCT Scope_Identity() as UserDetailsSequenceId from UserDetails

这是一个复杂而广泛的问题。你可能想考虑使用类似的东西。一般来说,除非使用真正的目标数据库,否则您将无法完成此任务。否。您应该始终在测试和生产堆栈中使用相同的数据库。不这样做会打开一个大的蠕虫罐头。为什么不能同时使用SQL Server进行集成测试?另外,
FIRST\u值
不是特定于SQL Server的。这是一个SQL标准窗口函数。为什么不将docker容器与SQL Server一起用于自动化测试?您也可以使用VM快照(它们有点重)。我不确定,但我认为hsqldb中没有兼容模式。。在h2db中,我可以创建并提及我需要哪种类型的db…比如mysql或mssql。这适用于First_Value(),而不适用于作用域标识。