当前位置:编程学习 > JAVA >>

HibernateTemplate执行自定义SQL不知道哪里错了

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.laoer.bbscs.bean.UserInfo;

public class UserInformation extends HibernateDaoSupport {

public String getUserandpassword() {

HibernateTemplate tmpl = this.getHibernateTemplate();

List<UserInfo> list = tmpl
.execute(new HibernateCallback<List<UserInfo>>() {
@Override
public List<UserInfo> doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("select * from user");

List results = query.list();
return (List<UserInfo>) results;
}

});

return list.toString();
}

}

============
以上代码Eclipse老提示 List<UserInfo> list = tmpl
.execute(new HibernateCallback<List<UserInfo>>() {
这里有问题,高人知道是什么原因吗? --------------------编程问答-------------------- 你实现接口,重写接口方法,怎么能人家的 方法返回值变了,,,List<UserInfo>------->Object

不知道对没
--------------------编程问答-------------------- 而且我觉得,应该对List<UserInfo> list = (List<UserInfo>)tmpl.execute(new HibernateCallback<List<UserInfo>>() {.........}强转,,,不知道对没。。 --------------------编程问答-------------------- (List<UserInfo>) results;  
这里 你的results查出来是一个list里放的map,List<Map> 的对象强转成List<UserInfo> 。

1,你可以返回值改成List<Map>。


2,你也可以修改你的sql语句 ,
SQLQuery query = session
.createSQLQuery("select {u.*} from user");
query.addEntity("u",UserInfo.class);
return query.list();


--------------------编程问答-------------------- SQL这里的user 应该是表名 而不是映射的类名。 --------------------编程问答-------------------- 我改成这样还是报错:
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.laoer.bbscs.bean.UserInfo;

public class UserInformation extends HibernateDaoSupport {

public String getUserandpassword() {

HibernateTemplate tmpl = this.getHibernateTemplate();

List<UserInfo> list = new ArrayList();
list = (List<UserInfo>) tmpl
.execute(new HibernateCallback<List<UserInfo>>() {

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("select * from user");

return (List<UserInfo>) query.list();
}

});

return list.toString();
}
} --------------------编程问答-------------------- user是表名,不是类名 --------------------编程问答--------------------
引用 5 楼 peacedog 的回复:
我改成这样还是报错:
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.laoer.bbscs.bean.UserInfo;

public class UserInformation extends HibernateDaoSupport {

public String getUserandpassword() {

HibernateTemplate tmpl = this.getHibernateTemplate();

List<UserInfo> list = new ArrayList();
list = (List<UserInfo>) tmpl
.execute(new HibernateCallback<List<UserInfo>>() {

public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session
.createSQLQuery("select * from user");

return (List<UserInfo>) query.list();
}

});

return list.toString();
}
}


你好像傻 这样改
你也可以修改你的sql语句 ,
SQLQuery query = session
.createSQLQuery("select {u.*} from user");
query.addEntity("u",UserInfo.class);
return query.list();
--------------------编程问答-------------------- 把异常贴出来
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,