奇怪的SQL Error: 0,SQLState: S0022错误

我使用hibernate和javabean开发web application遇到以下错误

22203 [http-80-4] INFO org.hibernate.type.StringType - could not read column value from result set: name; Column ' name ' not found.
22203 [http-80-4] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0,SQLState: S0022
22203 [http-80-4] ERROR org.hibernate.util.JDBCExceptionReporter - Column ' name ' not found.
org.hibernate.exception.SQLGrammarException: could not execute query

 

我的sql语句是

select ta.name as username,
ta.code,
ta.desc,
tb.type,
tb.name as displayname
from tablea ta
left join tableb tb on tb.id = ta.id

这个sql语句很简单,但并不知道什么原因报错。尝试了很多方法但都不奏效。

 

我将sql语句修改成

select ta.name ,
ta.code,
ta.desc,
tb.type,
tb.name
from tablea ta
left join tableb tb on tb.id = ta.id

select ta.name ,
ta.code,
ta.desc,
tb.type,
tb.name as displayname
from tablea ta
left join tableb tb on tb.id = ta.id

控制台不再报错,但是javabean无法取到tb.name的值,或者说tb.name是空。不知道hibernate是怎么处理的。

 

有尝试了很多遍,终于解决了问题,但还是不清楚原因。

select ta.name ,
ta.code,
ta.desc,
tb.type,
concat(tb.name,’’)
from tablea ta
left join tableb tb on tb.id = ta.id

 

问题虽然解决了,但是不知道内在机理,心里总觉得不爽,大家有类似情况的分享一下啊。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值