我的ORMLite 包有问题。当我为表生成模式时,我认为转义所有实体名称是一个好习惯。这将保护一些 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 中的保留字?关于如何以便携方式执行此操作的其他想法?
谢谢。