如何在Spring,JPA和Hibernate中为Glassfish v3配置MySQL JTA资源?

时间:2016-06-08 18:46:46

标签: mysql spring hibernate jpa jta

我的应用程序能够执行读取操作但无法写入数据库。我应该如何配置JTA事务管理器?我正在使用以下内容:Glassfish 3.1.2.2,Hibernate 4.2.21,Spring 4.2.5,MySQL 5.6和JDK 1.6。我尝试了以下配置:

的persistence.xml

<persistence-unit name="appPersistenceUnit" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/app</jta-data-source>
    <properties>
    <!--<property name="hibernate.transaction.jta.platform"-->
    <!--value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>-->
        <!--<property name="hibernate.transaction.factory_class" value="org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory"/>-->
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.connection.charSet" value="UTF-8"/>
    </properties>
</persistence-unit>

的web.xml

<persistence-unit-ref>
    <persistence-unit-ref-name>persistence/appPersistenceUnit</persistence-unit-ref-name>
    <persistence-unit-name>appPersistenceUnit</persistence-unit-name>
</persistence-unit-ref>

的applicationContext.xml

<jee:jndi-lookup id="entityManagerFactory" 
                 jndi-name="persistence/appPersistenceUnit"/>
<tx:jta-transaction-manager/>
<tx:annotation-driven/>

MyDAOImpl.java

@PersistenceContext(type = PersistenceContextType.EXTENDED, name = "appPersistenceUnit")
protected EntityManager entityManager;

@Override
public int save(final MyEntity myEntity) {
    try {
        entityManager.merge(myEntity);
    }
    catch (Exception e) {
        LOGGER.error("Error while saving MyEntity", e);
    }
    return 1; // id of the created element.
}

在尝试保存实体时,出现以下错误:

Cannot join transaction: do not override hibernate.transaction.factory_class

请指导我。我做错了什么?

0 个答案:

没有答案