TransactionRequiredException de l'Exécution d'une mise à jour/suppression de requête

Salut, je suis à l'utilisation d'hibernate JPA avec le printemps et mongodb et je suis en cours d'exécution de mon application sur Glassfish-4.0.

Ma classe de service est :

@Component
public class Test {
    @PersistenceContext
    EntityManager em;
    EntityManagerFactory emf;

    @Transactional
    public String persist(Details details) {
        details.getUsername();
        details.getPassword();

        Query query = em.createNativeQuery("db.details.find(username="+details.getUsername()+"&password="+details.getPassword());

        em.getTransaction().begin();
        em.persist(details);
        em.getTransaction().commit();
        em.flush();
        em.clear();
        em.close();
        query.executeUpdate();
        System.out.println("Sucessful!");
        return "persist";        
    }
}

Et mon spring-context.xml est :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="com.javapapers.spring.mvc" />
    <context:annotation-config />
    <mvc:annotation-driven />
    <tx:annotation-driven transaction-manager="txManager" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="ogmTest"/>
    </bean>
    <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    </bean>
</beans>

J'ai effectué quelques modifications dans le code, mais n'est pas leur effet.
Quelqu'un peut-il m'aider à régler ce.
Merci à l'avance.

  • Essayez de supprimer em.getTransaction().begin();em.getTransaction().commit();em.flush();em.clear();em.close(); il doit être au printemps pour gérer votre transaction
  • Merci pour la réponse, j'ai essayé avec ce que vous avez suggéré, mais pas de changement.
  • Hibernate JPA(Spring Data JPA) avec mongo?Je ne pense pas que cela fonctionnera - Mongo être NoSQL ne pas respecter les propriétés ACID. printemps de données mongodb est une chose à laquelle vous devriez être en utilisant.
InformationsquelleAutor user41498 | 2014-09-13