How do I set flush mode to "COMMIT" in my configuration files?

flush, hibernate, jpa, spring, transactions

Solution

Check this link

You may need to extend

org.springframework.orm.jpa.vendor.HibernateJpaDialect 

I hope this helps!

Problem

I'm using Spring 3.1.1.RELEASE, Hibernate 4.1.0.Final, and JPA 2.0. Is there a way I can configure Spring transactions to commit after the transactions are executed without Java code? In other words, I would like to set flush mode to commit in either the application context file, hibernate configuration file, or persistence.xml file. My Spring transaction service class looks like ``` @Transactional(rollbackFor = Exception.class) @Service public class ContractServiceImpl implements ContractService { @Autowired private ContractDAO m_contractDao; public void addContract(Contract contract) { m_contractDao.create(contract); } ... ``` and my application context is set up like so … ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> <property name="url" value="jdbc:hsqldb:mem:myproject" /> <property name="username" value="sa" /> <property name="password" value="" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> </property> <property name="persistenceXmlLocation" value="classpath*:META-INF/test-persistence.xml"/> <property name="persistenceUnitName" value="testingDatabase"/> <property name="dataSource" ref="dataSource"/> </bean> <bean id="sharedEntityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <tx:annotation-driven /> ``` My persistence.xml file is ``` <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="testingDatabase" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.ejb.cfgfile" value="/hsql_hibernate.cfg.xml" /> <property name="org.hibernate.FlushMode" value="commit" /> </properties> </persistence-unit> </persistence> ``` and my hibernate config file is ``` <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.pool_size">1</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.HSQLDialect</property> <property name="hibernate.hbm2ddl.auto">create-drop</property> <mapping class="org.mainco.subco.sbadmin.domain.Product" /> <mapping class="org.mainco.subco.sbadmin.domain.Contract" /> <mapping class="org.mainco.subco.organization.domain.Country" /> <mapping class="org.mainco.subco.organization.domain.State" /> <mapping class="org.mainco.subco.organization.domain.Address" /> <mapping class="org.mainco.subco.organization.domain.OrganizationType" /> <mapping class="org.mainco.subco.organization.domain.Organization" /> </session-factory> </hibernate-configuration> ```

Original source