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 应该是表名 而不是映射的类名。