我正在使用HSQLDB进行集成测试以在内存中创建表。当我运行我的测试时,它无法为具有double值的实体类创建表。我得到了下面提到的异常
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有问题。非常感谢任何帮助。
答案 0 :(得分:1)
原因是:SQL标准不允许这样做。 DOUBLE是近似浮点数的类型。它不能具有最大长度,如VARCHAR类型。只需使用"salary" DOUBLE NULL
。