站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题请教一个hibernate问题,各位高手多帮忙指点!

请教一个hibernate问题,各位高手多帮忙指点!

摘要: 请教一个hibernate问题,各位高手多帮忙指点!


刚接触hibernate和Struts在查询数据库时总是出错,我把错误的那部分代码贴出来
大家帮忙分析分析:
package com.company.hibernate.dao;

import com.company.hibernate.po.HibernateSessionFactory;
import com.company.hibernate.po.Operator;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;

public class OperatorManager {

public boolean findOperatorByName(String userName,String password){
boolean flag = false;
Session session = null;
Transaction ts = null;
Operator op = null;

try {
session = HibernateSessionFactory.currentSession();
ts = session.beginTransaction();
Query q = session.createQuery("from Operator as o where o.opName='"+userName+"' and o.opPassword='"+password+"'");
op = (Operator) q.list().get(0);
ts.commit();
flag = true;
} catch (HibernateException e) {
try {
ts.rollback();
} catch (HibernateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// TODO Auto-generated catch block
flag = false;
e.printStackTrace();
}

if(session==null){
try {
HibernateSessionFactory.closeSession();
} catch (HibernateException e) {
// TODO Auto-generated catch block
flag = false;
e.printStackTrace();
}
}

return flag;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

OperatorManager op = new OperatorManager();
if(op.findOperatorByName("www","222")){
System.out.println("12321321321321");
}else{
System.out.println("qqqqqqqqqqqq");
}
}

如果数据库里能查到符合要求的记录程序正常运行,查不到就抛异常说
op = (Operator) q.list().get(0);这一行IndexOutofBoundException异常。
不知到哪弄错了,请高手帮看,谢谢!



没有符合条件的记录当然会出现越界的错误了。

首先先判断一下list的size,如果大于0在继续操作,否则就返回相应的提示信息。


肯定是一条都没查到,你要他返回第一个,当然越界了


我开始时怀疑是数据表指针的问题那,顺便再问一句,List生成时是不是默认有个长度呀?


没有默认长度,ADD进去了才有长度.


那估计就是没有返回记录的问题了,我回去试试看。


还望了一点
session.createQuery("from Operator as o where o.opName='"+userName+"' and o.opPassword='"+password+"'");
这条语句执行后为什么查询不执行那?是不是得对返回的List进行类似
op = (Operator) q.list().get(0);
的操作才真正去查数据库呀?哎,刚开始学问题太多呀



不清楚了,应该查了吧,反正获取结果他都要返回LIST的,还有你的HQL里面,AS 没必要写,直接空格就行了.揭帖啊


明天


↑返回目录
前一篇: -lt
后一篇: 谁能告诉我,类,方法,构造方法三者直接的关系?