从我的junit测试中,我调用了一个简单的方法来清除我的表格:
@AfterClass
public static void runAfterClass() {
//Clear db contents after tests
// NOTE this clears ALL data from the table
try {
System.out.println("deleting db contents");
HibFunction.clearTable();
} catch (Exception e) {
System.out.println("Couldnt delete db contents");
e.printStackTrace();
}
清空表格的样子如下:
public static void clearTable()
{
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try{
transaction = session.beginTransaction();
session.createQuery("delete from metadataPoC.hib.TestHib").executeUpdate();
transaction.commit();
}catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
这些都是相对简单的内容,然而我的控制台输出却没有进一步的显示:
deleting db contents
我不确定为什么一个简单的
delete from classname
会导致这样的问题。程序一直挂起,没有失败或junit测试结果。
编辑
然而,我已经将问题隔离到了clearTable()方法中,在代码中移动它,一旦进入,就会停止响应!我不确定为什么,从我在网上找到的信息来看,我的方法似乎是正确的。但它必须是这个方法。我把它放在了我的@BeforeClass
中,当测试到达时,测试就被冻结了。底线是clearTable()方法存在问题。但我不知道是什么问题 :( 编辑2 追踪到了executeupdate命令的问题所在,由于某种原因,一旦到达以下位置,它就会停滞不前:
ParseUtil.encodePath(String, boolean) line: 100