首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个Hibernate代码的异常

2012-04-08 
一个Hibernate代码的错误有个错误,请高手指导,try{1Session session HibernateUtil.openSession()sessi

一个Hibernate代码的错误
有个错误,请高手指导,
try{
1Session session = HibernateUtil.openSession();
session.beginTransaction();

Group group = new Group("朋友");
Group group1 = new Group("商务");
Group group2 = new Group("家人");

ContactPerson cp = new ContactPerson("比尔盖茨");
cp.setGroup(group);
session.save(cp);

ContactPerson cp1 = new ContactPerson("巴菲特");
cp.setGroup(group1);
session.save(cp1);

ContactPerson cp2 = new ContactPerson("路人甲");
cp.setGroup(group2);
session.save(cp2);

session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally{
2 session.close();
}

标 1 的这一行如果放在try外面就真确;但如果放在try里面(想现在这样),标 2 的这一行就会提示有错误,前面有红色错误提示。
注:HibernateUtil是我写的一个工具类,用来获得session对象的,
请高手看看这是怎么回事呢,十分感谢!!
请解释详细原因,

[解决办法]
这个问题就是变量作用域的问题:
try和finally相当于是两个区域,所以session声明时要对这两个区域是全局的。。

你也可以如下写法:
Session session = null;
try{
session = HibernateUtil.openSession();
}catch(Exception e){

} finally{
session.close();
}
[解决办法]
就是说你放在里面的时候是一个局部变量 在finally他又不知道session是一个什么东西 你要是放在外面了 他就是这个方法的全局变量了 finally是在这个方法里面 finally就知道session是一个变量了 报的错应该是session is not define吧(session没定义).
[解决办法]
定义在try中,只对try内的代码块有效,catch中找不到,应该定义在外面
[解决办法]

Java code
// 声明sessionSession session = null;try{  // session 赋值  session = HibernateUtil.openSession();}catch(Exception e){} finally{// 关闭session  session.close();} 

热点排行