public class TestHibernate {
private static final SessionFactory sessionFactory;
static{
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new HibernateException(e.getMessage());
}
}
}如果我不写throw new HibernateException(e.getMessage());eclipse编译private static final SessionFactory sessionFactory;这行就会报错,报错如下:
Multiple ers at this line
- The value of the field TestHibernate.sessionFactory is
not used
- The blank final field sessionFactory may not have been
initialized请高人指点下下
private static final SessionFactory sessionFactory;
static{
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new HibernateException(e.getMessage());
}
}
}如果我不写throw new HibernateException(e.getMessage());eclipse编译private static final SessionFactory sessionFactory;这行就会报错,报错如下:
Multiple ers at this line
- The value of the field TestHibernate.sessionFactory is
not used
- The blank final field sessionFactory may not have been
initialized请高人指点下下
您是来玩我们的吧,这代码能编译?final的变量不附值?
- The value of the field TestHibernate.sessionFactory is
not used
- The blank final field sessionFactory may not have been
initialized提示说的很明白,sessionFactory 没有被初始化,因为如果发生异常,而你在异常里未做任何处理,sessionFactory 就不会赋值
不好意思,没有看仔细。
我觉得是这样的,调用new Configuration().configure().buildSessionFactory();的时候如果抛出异常则不会继续执行附值,你这里蒋异常捕获了,就会导致静态final变量没有被附值的问题,这个问题好像自己没有办法处理。所以你需要继续向上一层抛出直到由编译器执行正确的操作。
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//throw new HibernateException(e.getMessage());
sessionFactory = null; //这里初始化一下
}