执行hql 语句的时候出现问题,大家都来分享下看看如何解释。
时间:2011-12-21
来源:互联网
有一条语句hql 是这样想写的 TABLE_1 、TABLE_2 为实体类。 numbers 是TABLE_1 里存在的,TABLE_2 里不存在numbers,仅仅存在number 一个字段。
SQL code
这样可以执行,但是如果改成了。
SQL code
[/code]
这样就执行不了。会报错。对应的是在 a.numbers 这个地方报错的,说这个没有指定。后台输出的代码是
hibernate 转换后
SQL code
可以发现原来定义的 TABLE_1 a 别名为 a,现在转化后,直接没有别名了。但是在后面的更新里面,他自动给添加一个别名n,但是这个别名n (理论上应该就是hql 语句写的那个 a) 。不知道是不是hierbernate 转换后,没有转换好。
可能写的比较乱,但是现在就是存在这个问题,
希望大家来讨论下这个问题。为什么会出现这样的情况。还是hierbernate转换出现了问题。
SQL code
hqlStr = update TABLE_1 a set a.numbers= (select nvl(numbers,0.00) + nvl(b.number,0.00) from TABLE_2 b where a.id= b.id ) where a.projno ='111111'
这样可以执行,但是如果改成了。
SQL code
hqlStr = update TABLE_1 a set a.numbers= (select nvl(a.numbers,0.00) + nvl(b.number,0.00) from TABLE_2 b where a.id= b.id ) where a.projno ='111111'
[/code]
这样就执行不了。会报错。对应的是在 a.numbers 这个地方报错的,说这个没有指定。后台输出的代码是
hibernate 转换后
SQL code
update TABLE_1 set numbers= (select nvl(别名n_.numbers,0.00) + nvl(b.number,0.00) from TABLE_2 别名m where TABLE_1.id= 别名m.id ) where projno ='111111'
可以发现原来定义的 TABLE_1 a 别名为 a,现在转化后,直接没有别名了。但是在后面的更新里面,他自动给添加一个别名n,但是这个别名n (理论上应该就是hql 语句写的那个 a) 。不知道是不是hierbernate 转换后,没有转换好。
可能写的比较乱,但是现在就是存在这个问题,
希望大家来讨论下这个问题。为什么会出现这样的情况。还是hierbernate转换出现了问题。
作者: zhangliangming_87 发布时间: 2011-12-21
怎么没有来讨论的啊?
作者: zhangliangming_87 发布时间: 2011-12-27
update 语法支持”别名“?
作者: greenprobe1 发布时间: 2011-12-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28