struts2连接数据库问题

yangwangtiankou 2010-12-08 09:17:30
package seriver;
import java.util.Iterator;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.apache.struts2.ServletActionContext;
import java.sql.*;
public class Find extends ActionSupport{
private String find;

public String getFind() {
return find;
}

public void setFind(String find) {
this.find = find;
}
private Session session=null;
@SuppressWarnings("unchecked")
public String execute()
{


Configuration config=new Configuration().configure();
//从配置中取出SessionFactory
SessionFactory factory=config.buildSessionFactory();
//从SessionFactory中取出一个Session
this.session=factory.openSession();
String sql="select * from XinxiAction us where us.username=?";
Query query=this.session.createSQLQuery(sql);
query.setString(0,getFind());
List list=query.list();
Iterator iter=list.iterator();
XinxiAction X=(XinxiAction)iter.next();
System.out.println("uname:"+X.getUname());
ServletActionContext.getRequest().setAttribute("list",list);
return "success";

}

}
最后运行错,说iter.next()无法转化为XinxiAction
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangwangtiankou 2010-12-09
  • 打赏
  • 举报
回复
换成hql就无法运行了!
new_bird_0001 2010-12-08
  • 打赏
  • 举报
回复
建议你把hibernate部分移出这个action类,其次,struts2的aaction中的数据,并不需要放置到request对象容器中。在hibernate中你这里的查询完全可以用hql,不要用sql。
magicluo 2010-12-08
  • 打赏
  • 举报
回复
用hql吧
eswn 2010-12-08
  • 打赏
  • 举报
回复

String sql="select * from XinxiAction us where us.username=?";
改成
String sql="from XinxiAction us where us.username=?";
后用CreateQuery来做


因为createSQLQuery不是hibernate的对象查询,是SQL查询,返回的应该是数组,楼主可以DEBUG看下。

58,441

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧