+ -
当前位置:首页 → 问答吧 → 执行hql 语句的时候出现问题,大家都来分享下看看如何解释。

执行hql 语句的时候出现问题,大家都来分享下看看如何解释。

时间:2011-12-21

来源:互联网

有一条语句hql 是这样想写的 TABLE_1 、TABLE_2 为实体类。 numbers 是TABLE_1 里存在的,TABLE_2 里不存在numbers,仅仅存在number 一个字段。
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

热门下载

更多