SQL 无效列错误。在sql developer中工作,在java中给出错误

Posted

技术标签:

【中文标题】SQL 无效列错误。在sql developer中工作,在java中给出错误【英文标题】:SQl invalid column error. works in sql developer, gives error in java 【发布时间】:2011-02-08 21:56:19 【问题描述】:

当我运行这个查询时:select emp.emp_name as "name" from emp order by name. 这从 sqldeveloper 运行良好。但是通过java,使用休眠会话,这给出了一个sql:invalid column error. 为什么会有这种行为差异? 编辑:错误说 Invalid Column :NAME (大写)而不是名称。我会试试这个:

从 emp order by "name" 中选择 emp.emp_name 作为 "name"

【问题讨论】:

您是否尝试将其作为 Hibernate 查询语言 (HQL) 查询执行?如果是这样,则需要重写以使用类和属性名称而不是表和列名称。 @Rob:no..SQL 在休眠中查询 【参考方案1】:

名称“name”可能是保留关键字。 sql开发人员正在原谅。试试

select emp.emp_name as [name] from emp order by [name]

或者更好的是,不要使用保留关键字,甚至是可能保留关键字。

即使这不是问题(可能与您的平台/rdbms 无关),您也应该避免使用“type”、“DateTime”等列名,仅出于代码可读性的目的,保留字抛开冲突。

【讨论】:

我发现值得继承 Hibernate 的 DefaultNamingScheme 来引用所有表/列标识符,它确实应该已经这样做了。【参考方案2】:

请看我的编辑。它解决了这个问题。

【讨论】:

以上是关于SQL 无效列错误。在sql developer中工作,在java中给出错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Oracle SQL Developer v19 的查询中的平均日期列

SQL Developer:标识符无效错误

PL/SQL developer 出现无效的SQL语句的解决

ORA-29280: 在 SQL Developer 中使用目录的目录路径无效

pl/sql developer连接成功无效

oracle SQL Developer 显示数字数据类型为空,而 Length 函数显示 ORA-01722:无效数字