EntityManager kann persist nicht zum Speichern von Elementen in der Datenbank verwenden

Ich bin auf das Problem gestoßen, das Element mithilfe von EntityManager in der Datenbank zu speichern. Basierend auf den Antworten, die ich gefunden habe, habe ich diese vier Möglichkeiten in meinem DaoJpa ausprobiert, aber immer noch versagt. Hier habe ich die vier Möglichkeiten angefügt, die ich ausprobiert habe:

Code im Controller-Teil:

   @Transactional 
   SmartProduct smartProduct = new SmartProduct();
            smartProduct.setName("Dove Soap");
            smartProductDao.persist(smartProduct);

1. DaoJpa:

 @Transactional
 public void persist(SmartProduct smartProduct) {
            entityManager.persist(smartProduct);

Geht nicht

2.

@Transactional
public void persist(SmartProduct smartProduct) {
entityManager.persist(smartProduct);
entityManager.flush();

Ausnahme: Es wird keine Transaktion ausgeführt

3.

@Transactional
public void persist(SmartProduct smartProduct) {
EntityTransaction emTransaction = entityManager.getTransaction();
        emTransaction.begin();  
        entityManager.persist(smartProduct);
        emTransaction.commit();
        entityManager.close();

Ausnahme: Es ist mir nicht gestattet, eine Transaktion auf einem gemeinsam genutzten EntityManager zu erstellen. Verwenden Sie stattdessen Spring-Transaktionen oder EJB CMT

4.

@Transactional
public void persist(SmartProduct smartProduct) {
                    EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
                EntityManager em = emf.createEntityManager();
                EntityTransaction etx = em.getTransaction();
                etx.begin();
                em.persist(smartProduct);
                etx.commit();
                em.close();
                emf.close();

Ausnahme: Die Anwendung muss JDBC-Verbindungen bereitstellen

Könnte mir jemand helfen, das Problem herauszufinden, bitte? Vielen Dank im Voraus!

Vielen Dank an JustinKSU's Hilfe. Ich füge die Anmerkung im Frühlingskontext hinzu und dann ist es gelöst! Hier ist die vorherige Version meines Spring-Kontexts:

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />

    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
        <property name="persistenceUnitName" value="persistenceUnit" />
        <property name="dataSource" ref="dataSource" />
    </bean>

Nach dem Hinzufügen der

<tx:annotation-driven />

Es klappt:

<tx:annotation-driven />
    <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />

    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
        <property name="persistenceUnitName" value="persistenceUnit" />
        <property name="dataSource" ref="dataSource" />
    </bean>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage