Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将SQL Server中的静态方法别名为H2内存数据库中的等效方法_Java_Sql Server_Integration Testing_H2 - Fatal编程技术网

Java 如何将SQL Server中的静态方法别名为H2内存数据库中的等效方法

Java 如何将SQL Server中的静态方法别名为H2内存数据库中的等效方法,java,sql-server,integration-testing,h2,Java,Sql Server,Integration Testing,H2,我正在为在生产环境中运行SQL Server的应用程序添加自动集成测试。该应用程序在SQL Server中使用GIS功能,我正在尝试在内存H2数据库中构建等效版本(我在这里使用额外的工具进行GIS计算) 我试图验证的SQL Server查询使用相对简单的GIS函数,如下面的示例所示 SELECT LOCATION_ID, FROMLOCATION.FROMLOC.STDistance(TOLOCATION.TOLOC) * 0.000621371 AS MILES FROM dbo

我正在为在生产环境中运行SQL Server的应用程序添加自动集成测试。该应用程序在SQL Server中使用GIS功能,我正在尝试在内存H2数据库中构建等效版本(我在这里使用额外的工具进行GIS计算)

我试图验证的SQL Server查询使用相对简单的GIS函数,如下面的示例所示

SELECT
  LOCATION_ID,
  FROMLOCATION.FROMLOC.STDistance(TOLOCATION.TOLOC) * 0.000621371 AS MILES 
FROM
  dbo.MYTABLE1
另一个例子:

INSERT INTO dbo.MYTABLE1 (LOCATION)
VALUES (geography::POINT(:latitude, :longitude, 4326));
在所有情况下,H2提供的函数在名称上都不同于SQL Server函数,我一直在尝试创建可以工作的别名()。我遇到的问题是H2不允许我从T-SQL创建包含
运算符的别名。我在创建此类别名时遇到以下错误:

org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of resource class path resource [sql/Aliases.sql]: create alias geography::Point for "com.example.DbFunctions.createWkt"; nested exception is org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE ALIAS GEOGRAPHY::[*]POINT FOR ""com.example.DbFunctions.createWkt"" "; expected "., DETERMINISTIC, NOBUFFER, AS, FOR"; SQL statement:
create alias geography::Point for "com.example.DbFunctions.createWkt" [
如果我将别名更改为通用的(比如
apoint
,而不是
geography::Point
),测试将正常工作


有没有办法解决这个问题并构建包装器函数?我目前的方法是进行文本替换,将GIS调用从SQL Server方言转换为H2方言,但我希望避免这种情况,因为这会降低我尝试编写的测试的价值。

您是在谈论强制转换操作吗?您试图模拟的原始SQL查询是什么?@nicolas-f我在问题本身中添加了一些细节。很抱歉,H2GIS不支持地理。这意味着WGS84上的距离函数永远不会给出预期的结果。在H2中,
是强制转换操作的保留运算符。(将一种类型转换为另一种类型)