Hibernate使用原生SQL多表查询时字段名相同导致查询数据覆盖问题解决办法

来源:互联网 发布:数据资源共享 办法 编辑:程序博客网 时间:2024/05/29 13:24

系统测试环境:

MySQL 5.0

Hibernate 3.3




由于使用了hibernate,虽然使用原生SQL绕过了hibernate自己的封装,但是还是有些影响,比如字段别名问题;相同的字段名经过hibernate查询会出现前一列覆盖后一列的情况,这时可以用


方法来将表的别名和实体类联系起来,这个方法指定了SQL查询字符串,要返回的实体。如果有多张表则以此类推。

SQL语句

select {表1别名.*}, {表2别名.*} from question {表1别名} left join answer {表2别名}  on {表2别名}.id={表1别名}.ansId

取“表1”的值用list.get(0)来获取,具体字段则用表1对应的实体类的属性来取值,表2的值用list.get(1)来获取,具体字段同上。


注:

如果报

    [org.hibernate.type.IntegerType] - <could not read column value from result set: id10_0_; Column 'id10_0_' not found.>

等类似错误,说明SQL语句有错或者没有使用addEntity()方法。

欢迎访问原文:Hibernate使用原生SQL多表查询时字段名相同导致查询数据覆盖问题解决办法


0 0
原创粉丝点击