1
resposta

Spring Hibernate e oracle11g

Galera, to tentando usar o hibernate com o oracle, mas após vários erros corridigos e tentativas estou caindo nesse erro:

org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
    org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:524)

Alguem tem alguma ideia?

Produto DAO:

@Repository
@Transactional
public class ProdutoDAO {

    @PersistenceContext
    protected EntityManager manager;

    public void gravarProduto(Produto produto){
        manager.persist(produto);
    }
}

JPAConfiguration:

@Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();        
        factoryBean.setJpaVendorAdapter(vendorAdapter);


            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
            dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:XE");
            dataSource.setUsername("system");
            dataSource.setPassword("EYbr2017#");
            factoryBean.setDataSource(dataSource);

            Properties props = new Properties();
            props.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
            props.setProperty("hibernate.show_sql", "true");
            props.setProperty("hibernate.format_sql", "true");
            props.setProperty("hibernate.hbm2ddl.auto", "update");
            props.setProperty("hibernate.default_schema", "system"); 
            props.setProperty("connection.pool_size", "5");


        factoryBean.setJpaProperties(props);

        factoryBean.setPackagesToScan("org.testeSpringHibernate.models");

        return factoryBean;
    }

    @Bean
    JpaTransactionManager transactionManager(EntityManagerFactory emf){
        return new JpaTransactionManager(emf);
    }
1 resposta

Olá Vinicius !

Em algum outro lugar do projeto você esta fazendo isso:

manager.getTransaction().begin(); ou manager.getTransaction().commit();

Porque a transação está sendo gerenciada pelo Spring e não pode fazer isso manualmente.

Espero ter ajudado.