奇怪的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

 

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

 

 

你可能感兴趣的:(java)