调用查询数据库操作的时候,HQL语句写错也没有错误提示。其中我的代码封装如下:
hibernate、struts2配置已经整合到spring中。
1.
处理页面传来的值的 action类:
public class ManagerAction extends BaseAction{
@Resource
private ManagerInter managerImpl;
private Manager manager;
public String recManager(){
String account = manager.getAccount();
String paswd = manager.getPassword();
System.out.println(account+" "+paswd);
List<Manager> managers = managerImpl.executeQuery("from Manager",account,paswd);
return "success";
}
public Manager getManager() {
return manager;
}
public void setManager(Manager manager) {
this.manager = manager;
}
public void setManagerImpl(ManagerInter managerImpl) {
this.managerImpl = managerImpl;
}
这段代码中的HQL语句是明显错误,但却没有异常抛出。在HQL语句正确的情况下,是能正常的查询出数据,故已经排除数据库异常,代码错误,没织入spring容器等错误。
2.
这个查询方法是调用了 ManagerInter 接口里的方法,已经织入spring,其中ManagerInter接口代码如下:
public interface ManagerInter extends BaseDaoInter{
//这个接口写入该业务专有方法
}
这个接口是继承了一个基础接口,基础接口代码如下:
public interface BaseDaoInter {
/**
* 查询方法
* */
public List executeQuery(String hql , Object...prameters);
}
其中实现类如下:
@Transactional
public abstract class BaseDaoImpl implements BaseDaoInter{
@Resource
private SessionFactory sessionFactory;
//查询方法
public List executeQuery(String hql, Object... prameters) {
Query query = sessionFactory.getCurrentSession().createQuery(hql);
if(prameters!=null&&prameters.length>0){
for (int i = 0; i < prameters.length; i++) {
query.setParameter(i, prameters[i]);
}
}
return query.list();
}
}
问:要怎样做才能让错误抛出。
我已经尝试过的方法:
public List executeQuery(String hql, Object... prameters) {
Query query = null;
try {
query = sessionFactory.getCurrentSession().createQuery(hql);
if (prameters != null && prameters.length > 0) {
for (int i = 0; i < prameters.length; i++) {
query.setParameter(i, prameters[i]);
}
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return query.list();
}
对这个实现类 进行 异常扑捉,可是不行。
问:怎么办?