我遇到了我的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