private void clearDB() throws PersistentException {
    PersistentTransaction transaction =
        PassPersistentManager.instance().getSession().beginTransaction();

    DefectTypesCriteria tc = new DefectTypesCriteria();
    tc.name.ilike("TEST-%");
    for (DefectTypes t : DefectTypesFactory.listDefectTypesByCriteria(tc)) {
      t.delete();
    }

    DefectClassesCriteria cc = new DefectClassesCriteria();
    cc.name.ilike("TEST-%");
    for (DefectClasses c : DefectClassesFactory.listDefectClassesByCriteria(cc)) {
      c.delete();
    }

    transaction.commit();
    PassPersistentManager.instance().disposePersistentManager();
  }
  @Test
  public void testChainedTransactions() throws Exception {
    PersistentTransaction transaction =
        PassPersistentManager.instance().getSession().beginTransaction();

    //		Session session =
    // PassPersistentManager.instance().getSession().getSessionFactory().openSession();
    //		Transaction transaction2 =
    // PassPersistentManager.instance().getSession().getSessionFactory().openSession()
    //				.beginTransaction();

    try {

      System.out.println("Creating defect type 1...");

      DefectTypes defectType = DefectTypesFactory.createDefectTypes();
      defectType.setName("TEST-Мой тип");
      defectType.setDefectImage(Utils.loadFromResource("resources/splash/slow.gif"));

      System.out.println("Creating defect class 1...");
      DefectClasses defectClass = DefectClassesFactory.createDefectClasses();
      assertEquals(0, defectClass.getIdDefectClass());
      defectClass.setName("TEST-Новый отличный дефект");
      defectClass.save();
      //			session.save(defectClass);
      assertFalse(0 == defectClass.getIdDefectClass());

      System.out.println("Creating defect class 2...");
      DefectClasses defectClass2 = DefectClassesFactory.createDefectClasses();
      defectClass2.setName("TEST-Еще один прекрасный дефект");
      defectClass2.save();
      // session.save(defectClass2);
      assertFalse(0 == defectClass2.getIdDefectClass());
      assertFalse(defectClass.getIdDefectClass() == defectClass2.getIdDefectClass());

      // System.out.println("Commit classes...");
      // transaction2.commit();
      // assertTrue(transaction2.wasCommitted());

      defectType.setDefectClass(defectClass);
      System.out.println("Saving type 1...");
      defectType.save();

      System.out.println("Creating defect type 2...");
      DefectTypes defectType2 = DefectTypesFactory.createDefectTypes();
      defectType2.setName("TEST-Мой второй тип дефекта");
      defectType2.setDefectImage(Utils.loadFromResource("resources/splash/cool.jpg"));

      System.out.println("Creating defect class 3 auto...");
      DefectClasses defectClass3 = DefectClassesFactory.createDefectClasses();
      defectClass3.setName("TEST-Третий класс");
      defectType2.setDefectClass(defectClass3);

      System.out.println("Saving type 2...");
      defectType2.save();

      System.out.println("Commit types...");
      transaction.commit();
    } catch (Exception e) {
      // transaction2.rollback();
      transaction.rollback();
      throw e;
      //		} finally {
      //
      //			//session.close();
      //
      //			transaction = PassPersistentManager.instance().getSession().beginTransaction();
      //
      //			DefectTypesCriteria tc = new DefectTypesCriteria();
      //			tc.name.ilike("TEST-%");
      //			for (DefectTypes t : DefectTypesFactory.listDefectTypesByCriteria(tc)) {
      //				t.delete();
      //			}
      //
      //			DefectClassesCriteria cc = new DefectClassesCriteria();
      //			cc.name.ilike("TEST-%");
      //			for (DefectClasses c : DefectClassesFactory.listDefectClassesByCriteria(cc)) {
      //				c.delete();
      //			}
      //
      //			transaction.commit();

    }
  }