当我尝试在mysql中执行以下查询时,它完美地运行。但是当我们通过Hibernate(3.2)尝试它时,hibernate没有区分m.NAME
和o.NAME
。它为m.NAME
返回相同的结果。
SELECT m.NAME, m.SCREENNAME, rm.ADDRESS, o.NAME FROM remoteunit rm LEFT JOIN mo m ON rm.MOID = m.ID JOIN overallcustomfields ocf ON m.ID = ocf.MOID LEFT JOIN organization o ON ocf.ORGID = o.ID WHERE m.DOMAINID = 2
我使用以下代码
Transaction transaction = session.beginTransaction();
SQLQuery query = session.createSQLQuery(queryString);
query.setLong("customId", customId);
remoteUnitList = (ArrayList<Object[]>)query.list();
transaction.commit();
注意:强制在SQLQuery
中使用Hibernate
,因为列是动态填充的,还有更多约束。
答案 0 :(得分:2)
您是否尝试过SELECT m.NAME as m_name, o.NAME as o_name...
。我遇到了同样的问题,并伴随着这种变化。