从我的JUnit测试我打电话一个简单的方法来清除我的表:Hibernate的声明挂起
@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();
}
的clearTable样子:
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
可能会导致此类问题。该方案刚刚挂了10分钟,没有失败或由junit测试结果。
编辑
但是我已经分离出的问题到clearTable()方法中的代码四处移动它,一旦它进入,挂起! 我不完全确定为什么,从我在网上找到的信息来看,我的方法看起来是正确的。但它必须是这种方法。我将它放在我的@BeforeClass
中,测试刚刚结束。
底线有clearTable()方法的问题。你我不知道是什么:(
EDIT 2
追查问题无论出于何种原因,它只是档一旦进入到命令的executeUpdate的部分:
ParseUtil.encodePath(字符串,布尔)线:100
呃,你会期望什么进一步的输出?我没有看到任何声明。 – Thomas 2011-05-17 09:18:23
lol对不起,我忘了提及我的程序没有完成。它也不会从数据库中的表中删除内容 – Will 2011-05-17 10:03:44
执行clearTable()方法时表中有多少行? – MarkOfHall 2011-05-17 16:20:46