鉴于使用JTA,对于 persistence.xml 是强制性的。这就是我最终要做的。
我的 persistence.xml
<?xml version="1.0" encoding="UTF-8"?><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="myPU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/jboss/datasources/MySqlDS</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <class>com.colenso.payrollapp.persistence.entities.Employee</class> <properties> <property name="hibernate.archive.autodetection" value="class"/> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.current_session_context_class" value="jta"/> <property name="hibernate.transaction.manager_lookup_class" value="blah blah"/> <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/><property name="hibernate.connection.release_mode" value="after_statement"/> </properties> </persistence-unit></persistence>
我更改了 Spring Context xml :
<!--********************Database Configurations********************************--> <!--Look up the Datasource that's been configured in JBoss as a JNDI datasource--> <jee:jndi-lookup id="datasource" jndi-name="java:jboss/datasources/MySqlDS" resource-ref="false" /> <!--Configuration for the Entity Manger Factory--> <bean id="entityManagerFactory" > <property name="packagesToScan" value="com.colenso.payrollapp.persistence.entities" /> <property name="jpaVendorAdapter"> <bean /> </property> <property name="dataSource" ref="datasource"/> <property name="jpaPropertyMap" ref="jpaPropertyMap" /> <property name="persistenceUnitName" value="myPU" /> </bean> <util:map id="jpaPropertyMap"> <entry key="show_sql" value="true" /> <entry key="dialect" value="org.hibernate.dialect.MySQLDialect" /> <entry key="hibernate.hbm2ddl.auto" value="validate" /> <entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/> <entry key="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/> <entry key="hibernate.cache.use_second_level_cache" value="true" /> <entry key="hibernate.cache.use_query_cache" value="false" /> <entry key="hibernate.generate_statistics" value="false" /> <entry key="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" /> </util:map> <!--Enable injection of the Entity Manager--> <bean /> <!--Enable Spring's Exception Translation Mechanism--> <bean /> <!--Configuration for the Transactions--> <bean id="transactionManager" > <property name="allowCustomIsolationLevels" value="true" /> <property name="transactionManagerName" value="java:/TransactionManager"/> </bean> <tx:annotation-driven />



