相关疑难解决方法(0)

Spring3的@Transactional @Scheduled没有承诺DB?

这是我第一次尝试Spring3的@Scheduled,但发现我无法承诺DB.这是我的代码:

@Service
public class ServiceImpl implements Service , Serializable
{
  @Inject 
  private Dao dao;

  @Override
  @Scheduled(cron="0 0 * * * ?") 
  @Transactional(rollbackFor=Exception.class)
  public void hourly()
  {
    // get xxx from dao , modify it
    dao.update(xxx);
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为它应该工作,我可以看到它每小时启动并从DB加载xxx,但数据不会提交给DB.

有许多人tx:annotation-driven在春天的XML:

<bean id="entityManagerFactoryApp" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="myapp"/>
</bean>
<bean id="transactionManagerApp" class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="entityManagerFactoryApp" />
</bean>

<tx:annotation-driven transaction-manager="transactionManagerApp" />
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我错过了什么吗?

我有一个' '的解决方案:

@Service
public class ServiceImpl implements Service , Serializable
{
  @Inject 
  private Dao dao;

  @Inject
  @Qualifier("transactionManagerApp")
  private PlatformTransactionManager …
Run Code Online (Sandbox Code Playgroud)

spring dependency-injection scheduling transactional spring-3

8
推荐指数
2
解决办法
6908
查看次数