创建包含DOUBLE类型列

时间:2018-02-08 09:42:56

标签: hsqldb in-memory-database integration-testing

我正在使用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有问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

原因是:SQL标准不允许这样做。 DOUBLE是近似浮点数的类型。它不能具有最大长度,如VARCHAR类型。只需使用"salary" DOUBLE NULL