我正在尝试Spring 3(.0.2.RELEASE)和JPA2以及Hibernate 3.5.1-Final.让我感到不安的是,spring似乎只接受一个名为"transactionManager“的事务管理器
如果我不把它命名为"transactionManager“,那么Spring将抛出名为'transactionManager'的。
这是我的配置:
<context:component-scan base-package="destiny.data.mining"/>
<context:annotation-config/>
<bean id="miningEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="mining"/>
</bean>
<bean id="miningTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
<property name="entityManagerFactory" ref="miningEntityManagerFactory"/>
</bean>
<tx:advice id="txAdviceMining" transaction-manager="miningTransactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="methods" expression="execution(* destiny.utils.AbstractDao+.*(..))"/>
<aop:advisor advice-ref="txAdviceMining" pointcut-ref="methods"/>
</aop:config>
<tx:annotation-driven transaction-manager="miningTransactionManager"/> 在此配置中,实体管理器工厂是而非,必然命名为"entityManagerFactory“,而"txAdvice”是,而非,也必然命名为"txAdvice“。但我不知道Spring到底为什么需要一个名为"transactionManager“的事务管理器?
有没有办法不给事务管理器命名为"transactionManager“? (我正在运行多个spring配置文件,因此我尽量避免名称冲突)
测试代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:mining.xml"})
public class MiningPersonDaoTest
{
@Inject
private EntityManagerFactory miningEntityManagerFactory;
@Inject
private MiningPersonDao miningPersonDao;
@Transactional
@Test
public void testUpdate()
{
MiningPerson p = miningPersonDao.get(42L);
p.setLocationName("OOXX");
miningPersonDao.update(p);
System.out.println(p);
}
}发布于 2013-06-30 15:49:26
今天,我在尝试的非常简单的例子时遇到了同样的问题。我给事务管理器指定了自定义名称"dmTransactionManager“。要修复它,我必须指定它,我必须如下所示:
<jpa:repositories base-package="com.my.repository" transaction-manager-ref="dmTransactionManager"/>https://stackoverflow.com/questions/3027511
复制相似问题