-1
嗯,我在論壇中查看了與我的問題有關的所有問題,但是我無法解決我的問題。所以我向任何能幫助我解決問題的人尋求幫助。線程「AWT-EventQueue-0」中的異常javax.persistence.TransactionRequiredException:無事務正在進行中
萬一,一切工作都沒有使用@Transactional註解,但是我想讓它以這種方式工作,等待評論。
這是我的persistence.xml:
<persistence 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"
version="2.0">
<!-- Persistence Unit -->
<persistence-unit name="databaseEstoque" transaction-type="RESOURCE_LOCAL">
<!-- Implements to JPA, in this case Hibernate -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- Here you can see all entities -->
<class>com.systemhaus.examples.domain.Produto</class>
<class>com.systemhaus.examples.domain.Gaveta</class>
<class>com.systemhaus.examples.domain.AbstractOperacao</class>
<class>com.systemhaus.examples.domain.AdicionaQuantidade</class>
<class>com.systemhaus.examples.domain.RetiraQuantidade</class>
<properties>
<!-- JDBC properties -->
<!-- Hibernate specific settings -->
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
這是我的applicationContext.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
<bean id="myEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="databaseEstoque" />
<property name="dataSource" ref="dataSource"/>
<property name="loadTimeWeaver">
<bean
class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
<bean id="gavetaDAO" class="com.systemhaus.examples.infraestructure.GavetaDBDAO" />
<bean id="produtoDAO" class="com.systemhaus.examples.infraestructure.ProdutoDBDAO" />
<bean id="operacaoDAO" class="com.systemhaus.examples.infraestructure.OperacaoDBDAO" />
<bean id="notaFiscalDAO" class="com.systemhaus.examples.infraestructure.NotaFiscalDBDAO" />
<bean id="compraFacade" class="com.systemhaus.examples.application.CompraFacade">
<constructor-arg ref="produtoDAO" />
<constructor-arg ref="gavetaDAO" />
<constructor-arg ref="operacaoDAO" />
<constructor-arg ref="estoque" />
</bean>
<bean id="vendaFacade" class="com.systemhaus.examples.application.VendaFacade">
<constructor-arg ref="produtoDAO" />
<constructor-arg ref="gavetaDAO" />
<constructor-arg ref="operacaoDAO" />
<constructor-arg ref="estoque" />
</bean>
<bean id="notaFiscalFacade" class="com.systemhaus.examples.domain.NotaFiscalFacade">
<constructor-arg ref="produtoDAO" />
<constructor-arg ref="gavetaDAO" />
<constructor-arg ref="operacaoDAO" />
<constructor-arg ref="notaFiscalDAO" />
<constructor-arg ref="estoque" />
</bean>
<bean id="estoque" class="com.systemhaus.examples.domain.Estoque">
<constructor-arg ref="estoqueRepositoryDB" />
</bean>
<bean id="estoqueRepositoryDB"
class="com.systemhaus.examples.infraestructure.EstoqueRepositoryDB">
<constructor-arg ref="gavetaDAO" />
<constructor-arg ref="produtoDAO" />
<constructor-arg ref="operacaoDAO" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:/home/pauloprass/eclipse-workspace/Java_Spring_Examples/lib/databaseEstoque" />
<property name="username" value="Paulo" />
<property name="password" value="1" />
</bean>
</beans>
這是我的方法:
private EntityManagerFactory emf;
@PersistenceUnit
public void setEntityManagerFactory(EntityManagerFactory emf) {
this.emf = emf;
}
@Override
@Transactional
public void saveGaveta(Gaveta gaveta) {
EntityManager em = emf.createEntityManager();
em.persist(gaveta);
em.flush();
}
究竟是什麼問題?你可以嘗試更具體,只保留相關的代碼。發佈一段代碼不會讓它更容易理解 –
我能夠解決我的問題,它恰好是我第一次創建Maven項目。所以我做了我的lib中的JAR的導入,但是我使用的是pom.xml,即使我正在更改我的pom.xml依賴關係,他也使用從我的lib導入的類,那麼我的解決方案是清理已編譯的內容並從lib中刪除所有JARS,並在pom.xml中添加依賴關係。 –
如果你解決了你的問題,你應該把它寫成一個答案 –