以下是HibernateUtil類:
public static Object get(Class clazz, int id) throws Exception{
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx = s.beginTransaction();
//Object obj = s.get(clazz, id);
Object obj = s.load(clazz, id);
System.out.println("~~~~~~~~~~~~在Hibernate.initialize(obj);之前~~~~~~~~~~~~~~~~");
Hibernate.initialize(obj);
System.out.println("~~~~~~~~~~~~在Hibernate.initialize(obj);之后~~~~~~~~~~~~~~~~");
tx.commit();
return obj;
}catch(Exception e){
if(tx != null){
tx.rollback();
throw e;
}
}finally{
if(s != null)
s.close();
return null;
}
}
然后調用該類的這個get方法:
try{
HibernateUtil.add(user);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
User tempU = (User)HibernateUtil.get(User.class, 0);
}catch(Exception e){
System.err.println(e);
System.err.println("~~~~~~~~~~~~~~~~~~~~有異常拋出!~~~~~~~~~~~~~~~~");
}finally{
System.out.println("~~~~~~~~~~~~~~~~~~~~~執行完了!~~~~~~~~~~~~~~~"); //為什么這句沒有執行呢!
}
輸出結果是:
請問:為什么System.out.println(
"~~~~~~~~~~~~~~~~~~~~~執行完了!~~~~~~~~~~~~~~~");沒有執行呢!
希望高手指點~~~~