Невозможно сохранить объект в базе данных с использованием репозиториев данных jpa Spring и JtaTransactionManager. - PullRequest
0 голосов
/ 25 мая 2018

пытаясь найти, что пошло не так с моим кодом, который работал нормально, пока я не перешел в JTAtransactionManager, возникла проблема с сохранением записи в базе данных, но при извлечении записи, работающей нормально, ниже приведены мой пример класса TransactionConfig и метод класса обслуживания.

@Configuration
@ComponentScan
@EnableTransactionManagement
public class TransactionConfig {


    @Bean(name = "userTransaction")
    public UserTransaction userTransaction() throws Throwable {
        UserTransactionImp userTransactionImp = new UserTransactionImp();
        //userTransactionImp.setTransactionTimeout(10000);
        return userTransactionImp;
    }

    @Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close")
    public TransactionManager atomikosTransactionManager() throws Throwable {
        UserTransactionManager userTransactionManager = new UserTransactionManager();
        userTransactionManager.setForceShutdown(false);

        return userTransactionManager;
    }

    @Bean(name = "transactionManager")
    @DependsOn({ "userTransaction", "atomikosTransactionManager" })
    public PlatformTransactionManager transactionManager() throws Throwable {
        UserTransaction userTransaction = userTransaction();

        TransactionManager atomikosTransactionManager = atomikosTransactionManager();
        return new JtaTransactionManager(userTransaction, atomikosTransactionManager);
    }

}


---Employee Service Class Method---

@Transactional
public void appExample() {

    try {

        Employee emp = new Employee();

        emp.setFirstName("Veer");
        emp.setLastName("kumar");

        empRepo.save(emp);
    } catch (Exception e) {
        log.error(e);
    }

}

1 Ответ

0 голосов
/ 28 мая 2018

Я думаю, что проблема связана с empRepo.save() вызовом метода.Этот вызов не вносит никаких изменений в базу данных, поскольку вы используете @Transactional для управления транзакциями.

Пожалуйста, попробуйте набрать empRepo.saveAndFlush(), который немедленно сбросит данные в базу данных.Вы можете сослаться на ответ Разница между сохранением и saveAndFlush в данных Spring jpa

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...