使用Hibernate的NativeSQL写了一个查询语句,但是后台报了SQL语法错误,具体报错如下:

[2012-08-08 12:55:00] ERROR  -> ORA-00918: column ambiguously defined
[2012-08-08 12:55:00] ERROR  -> org.hibernate.exception.SQLGrammarException: could not execute query

原因一:

如果2张表包含相同的字段,则对着同一个字段的操作如果不加上表名就会报此异常,如:

Student表:

id

name

1

student1

2

student2

CREATE TABLE `Student` (`id` int(11) NOT NULL,`name` char(20) NOT NULL,PRIMARY KEY (`id`)
)

Teacher表:

id

name

studentid

1

teacher

1

CREATE TABLE `Teacher` (`id` int(11) NOT NULL,`name` char(20) NOT NULL,`studentid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),CONSTRAINT `FK_STUDENTID` FOREIGN KEY (`studentid`) REFERENCES `student` (`id`)
)

则使用如下的sql查询就会报上面的异常:

select name from Teacher t LEFT OUTER JOIN Student s on t.studentid = s.id

SQL语句本身就是有问题的,事实上数据库不知道SQL中的name到底是Student表中的name字段还是Teacher表中的name字段

原因二:

还有一种情况也会出现该问题

select t.name,t.name,t.namefrom Teacher t LEFT OUTER JOIN Student s on t.studentid = s.id

SQL语句本身是没有问题的,不会在数据库客户端或诸如PL/SQL之类的工具中报错并且能正常查询出结果

但是Hibernate的查询却会报上面的错误,那么问题应该出在Hibernate方言或者是JDBC驱动上

解决方法是给重复的数据加上别名:

select t.name as name1,t.name as name2,t.name as name3   from Teacher t LEFT OUTER JOIN Student s on t.studentid = s.id

参考文章:

http://stackoverflow.com/questions/4811816/sql-column-ambiguously-defined-when-run-from-hibernate

[Hibernate]column ambiguously defined异常相关推荐

  1. ORA-00918: column ambiguously defined 未明确定义列

    在编写sql语句中 使用嵌套语句进行查询 出现异常:ORA-00918: column ambiguously defined 异常原因:select 查询的字段在from的两张表中都存在, 导致数据 ...

  2. oracle column ambiguously defined

    [color=red]问题:[/color]数据查询出现 column ambiguously defined 异常 [color=red]原因:[/color]当前sql语句,存在多表查询,查询的结 ...

  3. SQLcolumn ambiguously defined异常

    使用Hibernate的NativeSQL写了一个查询语句,但是后台报了SQL语法错误,具体报错如下: [2012-08-08 12:55:00] ERROR -> ORA-00918: col ...

  4. 02 ORA系列:ORA-00918 未明确定义列 column ambiguously defined

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. ORA-00918 未明确定义列 column ambiguously defin ...

  5. ORA-00918: column ambiguously defined解决之道

    最近做一个项目,经常需要用到多表查询(Hibernate),通过需要分页等,于是经常会碰到 ORA-00918: column ambiguously defined错误. 该报错翻译过来:某一列定义 ...

  6. ORA-00918: column ambiguously defined错误应对方法

    最近做一个项目,经常需要用到多表查询,通过需要分页等,于是经常会碰到 ORA-00918: column ambiguously defined错误应对方法,意思是说,某一列定义模糊,于是 经过了很多 ...

  7. oracle 报错 column ambiguously defined

    column ambiguously defined ORA-00918: column ambiguously defined java.sql.SQLException: ORA-00918: c ...

  8. 解决 Oracle column ambiguously defined 的问题

    1.案例1: select * from( select aa2.workorder,aa2.*,bb.* from (select  distinct t.workorder,t.client,t. ...

  9. Oracle报错“ORA-00918:column ambiguously defined”

    一.现象描述 ORA-00918:column ambiguously defined,从字面上理解就是:未明确定义的列. 当出现这种SQL语句的时候就会出现:select t.* from (sel ...

最新文章

  1. Python3.X新特性之print和exec
  2. Java Spring实现原理研究之Servlet initialization初始化过程
  3. 守列划分问题(圆排列+排列dp+结论)
  4. JAVA写同步栈_tomcat实现的同步队列和同步栈
  5. Java 算法 学做菜
  6. shell终端行首行尾命令介绍
  7. 软件工程个人作业01 100以内四则运算自动答题系统(含整数和真分数)
  8. python基础--合并两个列表
  9. A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
  10. 人力资源管理(HR)专业书籍推荐
  11. 计算机里的本地安全策略在哪找,本地安全策略哪里去了?
  12. 染布厂ERP、染厂ERP、漂染厂ERP、纺织印染ERP生产管理系统
  13. 魔百和CM311-1a YST线刷精简固件(可救砖)
  14. bat获取管理员权限运行
  15. 【C++】C++PrimerPlus(第6版)中文版 第9章 内存模型和名称空间 编程练习 参考答案
  16. 2014522420145238《信息安全系统设计基础》实验一 开发环境的熟悉
  17. 秒杀各种Pay?Samsung Pay支付宝功能率先体验
  18. SCSI PRs命令研究总结3 - Linux中的SCSI相关实现
  19. elementUI输入框去除空格
  20. CVE-2020-1938 Tomcat AJP漏洞复现

热门文章

  1. 中国计算机用户杂志,中国金融电脑
  2. 【Ps】如何在ps中导入新的字体
  3. 解决word转pdf 插入mathtype编号引用消失或wps打开出现错误!未定义书签
  4. Java之 从键盘输入两个数字,求和
  5. python的时间函数
  6. ESP8266_RTOS_SDK v3.x 读DS18B20温度数据
  7. CTF-Show密码学:ZIP文件密码破解【暴力破解】
  8. 忘记密码?不存在的, 教你如何使用python 暴力破解
  9. HEU-2017ACM集训队-队内训练赛(3.10)
  10. Javascript数组的创建