创建包含 DOUBLE 类型列的 table 时出现 HSQLDB 错误
HSQLDB error while creating a table that contains DOUBLE type columns
我正在使用 HSQLDB 进行集成测试以在内存中创建 tables。当我 运行 我的测试时,它无法为具有双精度值的实体 类 创建 table。我得到下面提到的异常
2603 [Datastore main ERROR] Error thrown
executing CREATE TABLE "simple"."SimpleObject"
(
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY,
"name" VARCHAR(40) NOT NULL,
"notes" VARCHAR(4000) NULL,
"salary" DOUBLE(4000) NULL,
"version" TIMESTAMP NOT NULL,
CONSTRAINT "SimpleObject_PK" PRIMARY KEY ("id")
) : unexpected token: ( : line: 6
java.sql.SQLSyntaxErrorException: unexpected token: ( : line: 6
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
但是当我将值更改为 BigDecimal 时,它起作用了。但我真的很想知道为什么 DOUBLE 有问题。非常感谢任何帮助。
原因是:SQL标准不允许。 DOUBLE 是近似浮点数的类型。它不能有最大长度,如 VARCHAR 类型。只需使用 "salary" DOUBLE NULL
.
我正在使用 HSQLDB 进行集成测试以在内存中创建 tables。当我 运行 我的测试时,它无法为具有双精度值的实体 类 创建 table。我得到下面提到的异常
2603 [Datastore main ERROR] Error thrown
executing CREATE TABLE "simple"."SimpleObject"
(
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY,
"name" VARCHAR(40) NOT NULL,
"notes" VARCHAR(4000) NULL,
"salary" DOUBLE(4000) NULL,
"version" TIMESTAMP NOT NULL,
CONSTRAINT "SimpleObject_PK" PRIMARY KEY ("id")
) : unexpected token: ( : line: 6
java.sql.SQLSyntaxErrorException: unexpected token: ( : line: 6
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
但是当我将值更改为 BigDecimal 时,它起作用了。但我真的很想知道为什么 DOUBLE 有问题。非常感谢任何帮助。
原因是:SQL标准不允许。 DOUBLE 是近似浮点数的类型。它不能有最大长度,如 VARCHAR 类型。只需使用 "salary" DOUBLE NULL
.