【发布时间】:2012-05-31 02:26:21
【问题描述】:
我正在尝试将所有 junit 测试切换到 hsqldb(真正的 db 是 oracle)。当我尝试映射包含以下内容的 .hbm.xml 文件时出现问题:
<property name="begin" type="integer" column="BEGIN" /> <property name="end" type="integer" column="END" />
现在在 mem db build 期间,我得到了以下信息:
错误 - 不成功:创建表 BLOCKTIME(ID bigint 不为空,BEGIN 整数,END 整数,TIMEZONE varchar(255),主键 (ID)) 错误 - 意外令牌:语句中的 END [创建表 BLOCKTIME(ID bigint 不为空,BEGIN 整数,END]问题似乎是限制为 mssql 作为关键字的 BEGIN 和 END 表名。
知道如何省略这个问题吗?
谢谢, 马立克。
【问题讨论】:
-
如果你只使用Oracle和HSQLDB,为什么要提到“mssql”?但是是的,
BEGIN是 HSQLDB 中的保留字(我认为实际上是在 SQL 中),我很惊讶您可以首先在 Oracle 中创建这样的列 -
BEGIN / END 在 ORACLE 中可接受,但在 mssql 中不可接受
-
但是你用的不是MS SQL(至少你只说HSQLDB和Oracle)
-
是的,但是当我开始使用 HSQLDialect 而不是 oracle 方言时,休眠将 BEGIN 和 END 视为关键字(这些是 mssql 关键字)
-
这些是 HSQLDB 关键字,与 MS SQL 无关。我真的很惊讶 HSQLDB 接受(理论上)无效的 Microsoft 使用
[]引用关键字的风格