@Transactional весной работает только для чтения, но не для записи - PullRequest
0 голосов
/ 22 ноября 2018

Раньше я обычно начинал и фиксировал транзакции, но теперь я пытаюсь использовать аннотацию @Transactional весной.По какой-то причине все операции только для чтения работают, но операции persist() и merge() не работают, и я ничего не вижу в журналах.Во время отладки я также вижу, что пружина создала прокси-сервер, но не знаю, где я ошибаюсь.Вот мой код и конфигурация контекста приложения Spring.

1.Jpa-context.xml

<context:annotation-config />

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


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

<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />

2.Framework-context.xml

<context:component-scan base-package="com.github.djuloori.whiteboard.framework" />
<context:annotation-config/>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<bean id = "m_SecurableEntityManager"  class = "com.github.djuloori.whiteboard.framework.SecurableEntityManagerImpl"/>

3.SecurableEntityManagerImpl.Java

@Service
@Transactional
public class SecurableEntityManagerImpl implements SecurableEntityManager  {

    @Autowired
    private EntityManagerFactory entityManagerFactory;

    public void save(Object var1) {
        getEntityManager().persist(var1);
    }

    public <T> TypedQuery<T> createQuery(String var1, Class<T> var2) {
        return getEntityManager().createNamedQuery(var1,var2);
    }

    public <T> T update(T var1) {
        return getEntityManager().merge(var1);
    }


    private EntityManager getEntityManager(){
        return entityManagerFactory.createEntityManager();
    }
}

Я также читал другие вопросы, связанные с @transactional, но не нашел правильного ответа.Я новичок в весне, было бы здорово, если бы кто-нибудь мог мне помочь.

1 Ответ

0 голосов
/ 22 ноября 2018

Autowiring EntityManager исправил проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...