How to manually start a transaction on a shared EntityManager in Spring?

前端 未结 4 1192
我在风中等你
我在风中等你 2020-12-25 11:36

I have a LocalContainerEntityManagerFactoryBean as EntityManager instance.

To quickly drop a full tables\' content, I want to run the follo

4条回答
  •  猫巷女王i
    2020-12-25 12:23

    You should use TransactionTemplate object to manage transaction imperatively:

    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                em.createNativeQuery("TRUNCATE TABLE MyTable).executeUpdate();
            }
        });
    

    To create TransactionTemplate just use injected PlatformTransactionManager:

    transactionTemplate = new TransactionTemplate(platformTransactionManager);
    

    And if you want to use new transaction just invoke

    transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
    

提交回复
热议问题