我现在有两个表:表1字段:code、name
表2字段:code、name执行SQL语句:select t1.code,t1.name,t2.name from 表1 as t1,表2 as t2 where t1.code=t2.code用Hibernate执行SQL进行多表查询功能,结果得出来的数据集中t2.name和t1.name的值是一样的,数据不正确,应该要怎样处理????数据库是MySQL也就是Hibernate执行原生态SQL语句有字段重复时,结果集数据不正确的问题!!!!!!
表2字段:code、name执行SQL语句:select t1.code,t1.name,t2.name from 表1 as t1,表2 as t2 where t1.code=t2.code用Hibernate执行SQL进行多表查询功能,结果得出来的数据集中t2.name和t1.name的值是一样的,数据不正确,应该要怎样处理????数据库是MySQL也就是Hibernate执行原生态SQL语句有字段重复时,结果集数据不正确的问题!!!!!!
解决方案 »
- 求助:SpringMVC中JSP文件不能进行Redirect处理。
- 原来还是正确的,后来改了包,就报这个错误了,我改回原来的包就报错!很郁闷,高手帮帮忙啊!
- 格式化HTML编码的问题
- 把web.xml中的配置信息输出到浏览器页面,为什么中文信息为乱码?
- 【--------急求助--------】:使用struts的validator过程中ValidatorForm类型转换的问题
- jexcel生成的execl文件,如果有数值型的0,那0就会不显示,就显示0,如何解决
- 请坐过jsp网站的朋友近来指点一二!!!!
- 菜鸟提问,mysql的驱动问题,在线等待,很快结分
- 在JSP程序中,如何用拼音来识别中文?
- 急!String和Date的转换.在线等待。
- 关于vcastr3网页播放器无法播放SWF视频的问题
- Strut2标签取对象出错,求解
addEntity只是吧你前面的表关联上你映射的类啊。
addEntity("t1",类.class)的返回值依然是个query,没有任何改变
如果我一个项目中有很多SQL语句是需要多表查询,那是不是每个SQL查询语句都对应一个class类呢???如果我一个项目中有几十个不同的SQL查询语句,是不是还要相应的定义几十个对应SQL语句的class类呢?
如果这样的话,你又嫌addEntity麻烦,你就去改数据库列的名字吧,或者用jdbc吧
不过写清楚点试试
select t1.code code1,t1.name name1,t2.name name2 from 表1 as t1,表2 as t2 where t1.code=t2.code
表1 as t1 left join 表2 as t2 on t1.code=t2.code
List list = null;
list = super.getHibernateTemplate().execute(new HibernateCallback<List>() {
@Override
public List doInHibernate(Session session) throws HibernateException, SQLException {
//String sql = "select d.buynum*d.printnum as pnum,d.buynum,d.printnum,t.* from wp_ordertemplate t,(select * from wp_orderdetail where state='0') d,(select guid from wp_order where fast=0) r where t.guid=d.templateid and d.orderid=r.guid and t.modelcode='1' ;";
StringBuilder strSql = new StringBuilder();
strSql.append("select d.buynum*d.printnum as pnum,d.buynum,d.printnum,d.state,d.buynote,d.pdfurl,t.*,r.buystate,t.guid,t.modelid from wp_ordertemplate t,(select * from wp_orderdetail");
//此处添加过滤条件
ArrayList params = new ArrayList();
if(StringUtil.isNotEmpty(state)){
strSql.append(" where state = '"+state+"'");
}
strSql.append(") d,(select * from wp_order where 1=1 ");
if(starttime != null && endtime != null){
strSql.append(" and inputtime > '"+starttime+"' and inputtime < '"+endtime+"'");
}
if(buystate != -1){
strSql.append(" and buystate = "+buystate);
}
strSql.append(") r where t.guid=d.templateid and d.orderid=r.guid");
if(buystate!=-1){
strSql.append(" and r.buystate = "+buystate);
}
if(StringUtil.isNotEmpty(modelcode)){
strSql.append(" and t.modelcode='"+modelcode+"'");
}
Long totalCount = count(strSql.toString());
if(totalCount < 0){
pager.setRowCount(0);
return new ArrayList();
}
pager.setRowCount(totalCount.intValue());
Query query = session.createSQLQuery(strSql.toString())
.addScalar("pnum")
.addScalar("buynum")
.addScalar("printnum")
.addScalar("state")
.addScalar("buynote")
.addScalar("inputtime")
.addScalar("name")
.addScalar("imgurl")
.addScalar("price")
.addScalar("buystate")
.addScalar("guid")
.addScalar("modelid");
query.setFirstResult(pager.getBeginRow());
query.setMaxResults(pager.getEndRow());
return query.list();
}
}); return list;
} //根据sql查询总记录数
public long count(final String strSql){
long count = 0;
count = super.getHibernateTemplate().execute(new HibernateCallback<Long>() {
@Override
public Long doInHibernate(Session session) throws HibernateException, SQLException {
long count = 0;
Query query = session.createSQLQuery(strSql);
count = query.list().size();
return count;
}
});
return count;
}自己要写一个新的类来封装查询出来的数据。