如何通过HQL / Hibernate验证我的所有表都是空的?

时间:2012-02-14 10:33:18

标签: java sql hibernate hql

我有一个很棒的功能测试套件。每项测试都是独立的。 但是,有时候会出现问题,其中一个测试会泄漏(在数据清理之前发生异常等),而后续的一些测试可能会失败。

所以我想在每个测试中做的第一件事就是检查数据库是否真的是空的。有必要知道破损是由于泄漏而不是回归。

我想知道我是否可以通过一个请求执行此操作,因为我希望避免执行和维护以下内容:

sessionFactory.getCurrentSession().createQuery("Select a From A a").list().isEmpty()
...
sessionFactory.getCurrentSession().createQuery("Select z From Z z").list().isEmpty()

我发现这个用于mysql:List of non-empty tables in MySQL database但它是特定的。

谢谢:)

2 个答案:

答案 0 :(得分:1)

我所做的是将我的“hibernate.hbm2ddl.auto”设置为在hibernate.cfg.xml中创建,并在每次测试中使用

重置我的sessionfactory
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

这样就可以为每个测试重新创建数据库

答案 1 :(得分:0)

怎么样

session.createQuery("select 1 from table").setMaxSize(1).list().isEmpty()