2017-09-19 53 views
-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(); 
    } 
+0

究竟是什麼問題?你可以嘗試更具體,只保留相關的代碼。發佈一段代碼不會讓它更容易理解 –

+0

我能夠解決我的問題,它恰好是我第一次創建Maven項目。所以我做了我的lib中的JAR的導入,但是我使用的是pom.xml,即使我正在更改我的pom.xml依賴關係,他也使用從我的lib導入的類,那麼我的解決方案是清理已編譯的內容並從lib中刪除所有JARS,並在pom.xml中添加依賴關係。 –

+0

如果你解決了你的問題,你應該把它寫成一個答案 –

回答

0

我能解決我的問題是,這是我第一次創建Maven項目。所以我做了我的lib中的JAR的導入,但是我使用的是pom.xml,即使我正在更改我的pom.xml依賴關係,他也使用從我的lib導入的類,那麼我的解決方案是清理已編譯的內容並從lib中刪除所有JARS,並在pom.xml中添加依賴關係。

相關問題