这是我第一次尝试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