我的ORMLite package有问题.当我为表生成模式时,我认为逃避所有实体名称是一个好习惯.这将保护某些Java类或字段名称不是SQL保留字:CREATE TABLE footable (stuff VARCHAR(255))我现在正在添加“原始”查询支持,...
我的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]
如果select表也被转义为“footable”,它工作正常. ORMLite支持的其他数据库可以在有或没有转义的情况下正常工作:MySQL,Postgres,Microsoft SQL Server,H2和Sqlite.
是否有更好的方法来逃避Derby和Hsqldb中的保留字?关于如何以便携方式执行此操作的其他想法?
谢谢.
解决方法:
所以,尽管布莱恩的回答并不恰到好处,但他还是引导我走上了前进的道路.
事实证明,因为我正在创建数据库“足够”,然后,正如布莱恩所说,它将创建区分大小写.但是,当我选择on footable(没有引号)时,Derby和Hsqldb正在将它推广为大写,所以我实际上在做:
SELECT * FROM FOOTABLE
它不是在没有引号的情况下不区分大小写(这会起作用),而是在没有引号然后按案例匹配时将实体名称提升为所有大写字母.我认为这里有一个错误……
在任何情况下,我都改变了我的Derby和Hsqldb以在ORMLite中大写所有实体名称并且事情正在发挥作用.丑陋的IMO,但工作.
本文标题为:java – 在Derby和Hsqldb中转义表和字段名称的问题
基础教程推荐
- springboot打war包的全过程记录 2023-01-18
- 一文带你学会Spring JDBC的使用 2023-05-19
- Java利用redis zset实现延时任务详解 2022-09-03
- 一起聊聊Java中的自定义异常 2023-04-18
- Spring @value用法示例详解 2023-04-23
- 关于maven使用过程中无法导入依赖的一些总结 2023-04-17
- SpringCloud微服务开发基于RocketMQ实现分布式事务管理详解 2023-05-19
- JavaWeb Servlet生命周期细枝末节处深究 2023-06-10
- jsp Response对象页面重定向、时间的动态显示 2023-07-30
- Java定义画板类的方法 2022-12-27