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>) 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 应该是表名 而不是映射的类名。
[解决办法]