有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用HQL/Hibernate验证我的所有表都是空的?

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

因此,在这些测试中,我想做的第一件事是检查数据库是否真的是空的。知道破损是由于泄漏而不是回归造成的会有帮助

我想知道我是否可以通过一个请求来实现这一点,因为我希望避免执行和维护以下操作:

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) 个答案

  1. # 1 楼答案

    怎么样

    session.createQuery("select 1 from table").setMaxSize(1).list().isEmpty()
    
  2. # 2 楼答案

    我要做的是将我的“hibernate.hbm2ddl.auto”设置为在hibernate中创建。cfg。在每个测试中,我使用

    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    

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