0

我按照此链接使用 JakartaEE 8、Payara web-server 5.2021.9、Hibernate 5.4.32 和 MariaDb 10.5 测试多租户。当我坚持并抛出异常时,即使使用 entityManager.getTransaction().rollback() 或 setRollbackonly(),我的测试实体也不会回滚(仍然保留在数据库中)。

这是我的代码:

@Stateless 
public class TestRollBackBean extends Dao {

    @PostConstruct
    public void init() {
        logger.info("is initializing");
    }

    @PreDestroy
    public void detroy() {
        logger.info("is detroying");
    }

    private static final Logger logger = LogManager.getLogger();
 
    public void testCertFormTx(final String tenantId) {
        final EntityManager em = getEntityManager(tenantId);
        final EntityTransaction etx = em.getTransaction();
        final CertificateForm cf = new CertificateForm();//ntity
        try {
            logger.debug("test persist and rollback for CertificateForm");
            
            cf.setActive(true);
            cf.setDesp("testing"); 
            em.persist(cf); 
            logger.debug("new Id: {}", () -> cf.getId());
            throw new Exception("test rollback now");
        } catch (Exception e) { 
            etx.setRollbackOnly(); 
        } finally {
            if (em != null && em.isOpen()) { 
                em.close();
            }
        }
    }
}

我错了或错过了什么?

4

0 回答 0