hibernate SQL query左连接的问题:结果跟查询分析器得出的不一样

custjcy 2013-12-19
SQL语句如下:
select msg.messageId, msg.folderId, cmsg.messageId
from message msg left join compose_message cmsg on cmsg.messageId=msg.messageId

在HeidiSQL中执行结果如下:
messageId  folderId   messageId
153        -3         NULL
164        -1         NULL


使用this.getSessionFactory().getCurrentSession().createSQLQuery(sql)创建SQL 查询,详细代码如下:

List result = this.getSessionFactory().getCurrentSession().createSQLQuery(sql).list();
if (result != null && result.size() > 0){
for(Object item : result){
Object[] row = (Object[])item;
Long msgId = ((BigInteger)row[0]).longValue();
Long msgFolderId = ((BigInteger)row[1]).longValue();
boolean isComposeMessage = row[2] != null ? true : false;
}
}

奇怪的是row[2]不为null,而是跟row[0]一样,分别为:153, 164。

有谁遇到过这样的问题?如何解决?
everydayuio 2013-12-19
第一列和第三列的列名都是messageId,这样就有问题了,看过hibernate代码,用的是列名取值。必须另取别名才行。
custjcy 2013-12-20
everydayuio 写道
第一列和第三列的列名都是messageId,这样就有问题了,看过hibernate代码,用的是列名取值。必须另取别名才行。


谢谢!正是这个问题,给最后一个列加上别名就好了。
Global site tag (gtag.js) - Google Analytics