id parebtid g_name g_id
1 0 日用产品 001
2 1 铅笔 002
1、String sql = "select g.g_id,g.g_name,s.g_name from mis_goods g,mis_goods s where s.id = g.parentid ";2、Query query = session.createSQLQuery(sql);
3、list = query.list();
for(int i =0;i<list.size();i++){
}这样写第二句老出错,该怎么解决啊?
如果使用4、String sql = "select g.*,s.* from mis_goods g,mis_goods s where s.id = g.parentid ";
这样写第二句不会出错,但是遍历list里的值for(){}怎么写啊?
1 0 日用产品 001
2 1 铅笔 002
1、String sql = "select g.g_id,g.g_name,s.g_name from mis_goods g,mis_goods s where s.id = g.parentid ";2、Query query = session.createSQLQuery(sql);
3、list = query.list();
for(int i =0;i<list.size();i++){
}这样写第二句老出错,该怎么解决啊?
如果使用4、String sql = "select g.*,s.* from mis_goods g,mis_goods s where s.id = g.parentid ";
这样写第二句不会出错,但是遍历list里的值for(){}怎么写啊?
1、Interator it =list.iterator();
2、while(it.hasNext()){
3、MisGoods goods= (MisGoods)it.next();
4、 System.out.println(goods.getG_name());
}
第三句就会报错
严重: Servlet.service() for servlet default threw exception
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.szmis.bean.MisGoods
at com.szmis.actions.MisGoodsAction.selectAllGoodsssExecute(MisGoodsAction.java:412)
用hibernate写Hql时,是对 对象的查询,不能写表字段
将查询结果再放入新的对象中new MisGood(),
或者
createSQLQuery(sql).addEntity(xx.class);
比如:session.createSQLQuery("select g.id,g.name from good as g").addEntity(MyGood.class);
至于你说的第一个问题,为什么换成*就可以了.可能是数据库字段名和你的实体名不太一样吧.
这样写是没错。但是sql语句是这样的
String sql ="select g.g_id,g.g_name,s.g_name from mis_goods g,mis_goods s where s.id = g.parentid ";
session.createSQLQuery(sql).addEntity(MyGood.class);也是报一样的错误啊
SQL的查询结果是Object[]的List
而不能使用对象的方式取得。for (int i=0;i<list.size();i++){
Object[] o=list.get(i);
System.out.println(o[0]);
System.out.println(o[1]);
System.out.println(o[2]);
...
}
用HQL怎么写?对象类是MisGoods,字段跟表是一样 的
岗位描述: 负责公司所要求的信息回复工作(有内容样版),工作地点不限,专兼职均可!
应聘要求: 上网熟练,平均每天工作投入约3小时,具体根据效率自定; 学历不限,在
职或学生皆可;勤奋,认真,有责任感;熟悉用电脑发消息的整个流程。(很简单,学一下就会!) (入职不需交任何押金,手续费,更不会拖欠工资) 详情看公司招聘:http://www.wi11.cn/?22461.htm邮箱:[email protected]
for(Iterator it = list.iterator(); it.hasNext();){
Object[] obj = (Object[]) it.next();
System.out.println(obj[0]);//第一个表
System.out.println(obj[1]);//第二个表
}
你可以在你的实体类中加入 构造方法,将你想查的参数,放入到对象中!
举个例子说
实体类Mis_goods
public class Mis_goods {
private String g_id;
private Stirng g_name;
省略一些setget方法 public Mis_goods() {}
public Mis_goods(String g_id, String g_name) {
this.g_id = g_id;
this.g_name = g_name;
}
}String hql = "select new Mis_goods(g.g_id, g.g_name) from Mis_goods";
……
session.createQuery(hql)
……
这样写就是正确的了,也就说如果你想查询指定的字段时,需要把那些歌字段放到对象中去。Map等集合中也是可以(你可以在网上查一下用法)希望能对你有所帮助,一起进步!
需要注意是N对1 还是N对M的关系