创建包含 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.