原SQL语句:from 数据表名
HQL语句:from 映射到数据表的对象名
HQL语句:from 映射到数据表的对象名
解决方案 »
- java getDeclaredField() 使用疑惑
- 数据库连接池异常 NoInitialContextException
- 请教个JDBC方式从MS SQL Server取smalldatetime和money数据类型问题,以及能否使用hibernate中实现同样功能?
- jdbc+oracle乱码
- java访问 oracle数据库,怎么弄?速度(jdbc)
- 新手求助哦
- 关于基于RBAC的用户权限管理的相关问题
- 在java中用dom解析xml文件的时候,文件里面的中文取出来是乱码??
- 怎样用jsp打开一个word页,并将焦点定在word文档的某个地方?
- 我这个Axis的JAVA客户端,为什么访问不了这个.net的WEB SERVICE?????
- 大量数据的修改?
- 看似简单的问题,可把我难住
还是出下面这样的错信息: cleaning up connection pool: jdbc:mysql://localhost/test
net.sf.hibernate.QueryException: undefined alias: name [SELECT name FROM test.UserInfo WHERE id=1]
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Query users = session.createQuery("SELECT u.id FROM UserInfo as u WHERE u.id=1"); for (Iterator iterator = users.iterate(); iterator.hasNext(); ) {
test.UserInfo user = (test.UserInfo) iterator.next();//提示这数据类型转换错误
System.out.println(user.getName()+ "\n\tPass: " + user.getPassword());
}
session.close();
sessionFactory.close(); }
直接
User user = session.load(User.class, id);
for (Iterator iterator = users.iterate(); iterator.hasNext(); ) 这个完全错误, 要调用Query的list()方法, 才有真正去查数据
应该这样
Iterator iter = session.createQuery("from UserInfo").list().iterate();
另外,必须查全部数据, 这样才能生成一个完整的PO, Hibernate不允许不完整对象
如果你写 select u.id from UserInfo , 那么返回的只是一个id的数组, 当然无法转换成PO,当然出现类型错误
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Query query = session.createQuery(" FROM UserInfo WHERE name like'%o%'");
Iterator iterator = query.iterate(); //取出每条数据
while(iterator.hasNext()) {
test.UserInfo po = (test.UserInfo)iterator.next();//注意:这里取出的是TeamPo对象
System.out.println("Name: "+po.getName()+"\t Pass: "+po.getPassword());
}
session.close();
sessionFactory.close();
TO: aChinese(一个中国人) ( ) Hibernate不允许不完整对象如果你写 select u.id from UserInfo , 那么返回的只是一个id的数组, 当然无法转换成PO,当然出现类型错误
----------------------
你这句话的意思是说Hibernate不可以进行表内的某些字段筛选查询吗?只能一次查询出表内所有字段?
假定一个表内有很多字段,我目前的查询只要部分,那应该怎么做呢?
我感觉这句不对吧!按你的说法下面这条查询也是错误的喽!SELECT team.teamName, team.teamId FROM Team AS team WHERE teamId = '001'http://www.xon.cn/article.php/11226 上面的语句来自此处,我被搞晕了
....//省略 //查询数据
Query query = session.createQuery("SELECT team.teamName, team.teamId FROM Team AS team WHERE teamId = '001'"); //取得数据List
Iterator iterator = query.iterate(); //取出每条数据
while (iterator .hasNext()) {
Object[] o = (Object[])iterator .next();
System.out.println(o[0]);
System.out.println(o[1]);
}-----------------------------------------------
object[] o 看到了吗? 只是普通数组, 它并没把他转换成po