【发布时间】:2011-03-08 11:02:41
【问题描述】:
我的ORMLite package 有问题。当我为表生成架构时,我认为转义所有实体名称是一个好习惯。这将保护一些 Java 类或字段名不成为 SQL 保留字:
CREATE TABLE "footable" ("stuff" VARCHAR(255))
我现在添加“原始”查询支持,以便 ORMLite 可以帮助用户执行他们自己的查询。但是,我发现使用 Derby 和 Hsqldb,实体名称不能在 没有 转义的情况下使用。例如,以下查询:
SELECT * FROM footable
产生以下错误:
Derby: ERROR 42X05: Table/View 'FOOTABLE' does not exist.
Hsqldb: Table not found in statement [select * from footable]
如果选择表也被转义为"footable",它工作正常。 ORMLite 支持的其他数据库无论是否使用转义都可以正常工作:MySQL、Postgres、Microsoft SQL Server、H2 和 Sqlite。
有没有更好的方法来转义 Derby 和 Hsqldb 中的保留字?关于如何以便携方式执行此操作的其他想法?
谢谢。
【问题讨论】:
标签: java orm hsqldb derby ormlite