我遇到了我的ORMLite package问题。当我为表生成模式时,我认为逃避所有实体名称是一个好习惯。这将保护一些Java类或字段名从一个SQL保留字:Derby和Hsqldb中转义表和字段名称的问题
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中的保留字?有关如何以便携方式执行此操作的其他想法?
谢谢。
感谢这个布莱恩。我在CREATE和SELECT语句中使用了相同的大小写,所以你的答案最初看起来并不合适。不过,我现在看到(根据我的答案),这是一个案例问题,德比和Hsqldb正在推动无引号的名字全部大写。 – Gray 2010-06-25 20:56:46