Я боролся с этими проблемами, и я искал весь интернет, но безрезультатно. Я надеюсь, что вы, парень, можете мне помочь
Я использовал Glassfish 3.1 с гибернацией JPA и весной 3.
Я настроил источник данных и пул в Glassfish для таргетинга MYSQL
пожалуйста, найдите мои конфигурации
Web.xml, я настроил постоянные единицы.
<persistence-unit-ref>
<description>Persistence Unit for PlyPlus</description>
<persistence-unit-ref-name>
persistence/zeneJPA
</persistence-unit-ref-name>
<persistence-unit-name>
ZeneJPA
</persistence-unit-name>
</persistence-unit-ref>
Приложение-контекст
<context:component-scan base-package="com.binarydna.store" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
<property name="persistenceUnits">
<map>
<entry key="ZeneJPA" value="persistence/zeneJPA">
</entry>
</map>
</property>
</bean>
<!--
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="ZeneJPA"/>
</bean>
-->
<!-- We want to use Spring's declarative @Transaction management -->
<tx:annotation-driven />
<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/zeneJPA" />
<tx:jta-transaction-manager />
persistence.xml
<persistence-unit name="ZeneJPA" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/zeneDS</jta-data-source>
<properties>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.generate_statistics" value="true"/>
<property name="hibernate.archive.autodetection" value="class,hbm"/>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
метод / класс, который сохраняет объект
@Repository("AdminDAO")
@Transactional
public class AdminDAOImpl implements AdminDAO {
@PersistenceContext
private EntityManager em;
public void setEntityManager(EntityManager em) {
this.em = em;
}
@Override
public boolean saveCustomer(Customer customer) {
boolean saved = false;
try {
if (customer.getId() == null) {
this.em.persist(customer);
}
else {
this.em.merge(customer);
}
saved = true;
}
catch (Exception p) {
saved = false;
return saved;
}
return saved;
}
}
Пожалуйста, помогите мне здесь, что я делаю не так?
Эта конфигурация генерирует таблицы, но просто не фиксирует транзакцию.
Когда я перехожу через дегаггер, он на самом деле вызывает сохранение, но не фиксирует транзакцию.
Пожалуйста, какова подходящая конфигурация, чтобы заставить весеннюю транзакцию работать со Glassfish? Спасибо, я ценю всю помощь.