【发布时间】:2015-07-06 11:49:51
【问题描述】:
当我的列名包含连字符“-”时出现异常
Entity : this is the entity name.
@Entity
@Table(name = "RequestHeader")
public class RequestHeader implements Serializable {
....
....
@Column(name = "`oh-ordnbr`")
private Integer ohOrdnbr;
架构定义:这是用于创建架构的查询。
CREATE MEMORY TABLE PUB.REQUESTHEADER(
REQUESTID INTEGER,
IMUSERID INTEGER,
REQUESTDATE DATE,
REQUESTTIME INTEGER,
REQUESTSTATUS VARCHAR(19),
REQUESTTYPE VARCHAR(22),
HEADERINSTRUCTIONS VARCHAR(5150),
DATEFORMAT VARCHAR(20),
TIMEFORMAT VARCHAR(20),
LANGUAGEID INTEGER,
"OH-ORDNBR" INTEGER,
"OH-TRCNSTAMP" INTEGER,
ISPICKUPLIST BIT(1),
CONSTRAINT "RQH-1" PRIMARY KEY(REQUESTID)
);
错误如下:
Exception Stack: Error message which I have received by running the Junit.
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: THIS_.oh-ordnbr
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source)
at org.hsqldb.QueryExpression.resolve(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你检查过 HSQLDB 的文档吗?我认为双引号中的列名可能区分大小写。你真的需要连字符吗?我会将它们更改为下划线,无论如何这都是 SQL 标准...
-
@RudolphEst 正确。请张贴作为答案。此外 THIS_ 不应用作表名。
标签: hsqldb spring-junit