我使用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
问题虽然解决了,但是不知道内在机理,心里总觉得不爽,大家有类似情况的分享一下啊。