日期:2014-05-17  浏览次数:20696 次

这个论坛有大神吗?
希望大神能够帮我解决这个问题

在struts(例如aAction) 用Myeclipse自动生成的DAO类(bDAO),
配置和注入没有问题。
1、但是在aAction中用bDAO类的findByXXX(属性就是数据库中列名)会报错,不过用bDAO里的findAll,save方法不会报错切得到正确的值。
例如:
public String execute() throws Exception {
// TODO Auto-generated method stub



String str=this.getBrandL();
List<Notebook> pList=this.getNotebookDAO().findSerices("ThinkPad");<会报错>
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
StringBuffer ddd=new StringBuffer();
for(Notebook no:pList){
ddd.append(no.getSeries());
ddd.append(",");
}
String arr=ddd.substring(0,ddd.length()-1);

response.getWriter().print(arr);
return null;
}

2、但是不在struts  action类里,而新建一个主类测试(主类配置在spring中了DAO类当然也配置在spring中)不会出错。为了区别为试过两种方法都成功了{
1、不在spring中配置主类,用最原始的spring调用方法调试例如:


ApplicationContext ctx=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); 
OtherTest con=ctx.getBean("otherTest", OtherTest.class);(原始调用)
接下来调用DAO类里各种方法都成功。
2、在spring中配置主类和DAO类。例如:
String str="ThinkPad";
List<Notebook> pList=this.getNotebookDAO().findByTrademark(str);
(spring配置和注入了主类和DAO类)
接下来调用DAO类里各种方法成功。
3、我尝试在DAO类(自动生成的用HibernateTemplate接口)自己写入HibernateCallBack用来实现各种findByXXX(属性,也就是列名),然后在上面的各种环境下使用均获得成功。
例如:
public boolean isExist(final String account) {//判断用户是否存在
List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
List result = session.createCriteria(Consumer.class).add(Restrictions.eq("account", account)).list();
return result;
}
});
if(list.size()>0) {
return true;
} else {
return false;
}
}(这些系统没有自动生成)


4、我现在就是不明白为什么在各种情况下为什么结果不同;既然都是系统自动生成的为什么在struts action下有区别(是我配置有问题还是为什么)。既然系统都生成了DAO类而且在其他类里都可以使用为什么不能在struts2 里也用到findByXXX各种方法(我实在是不想再自己写入其他代码,自动生成的代码应该可以用,只是我还没有实现)。

Spring Struts hibernate