一个Hibernate代码的错误
有个错误,请高手指导,
try{
1 Session 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
// 声明session
Session session = null;
try{
// session 赋值
session = HibernateUtil.openSession();
}catch(Exception e){
} finally{
// 关闭session
session.close();
}