Spring @Transactional方法中没有事务开始

Spring @Transactional方法中没有事务开始,第1张

Spring @Transactional方法中没有事务开始

a)您正在定义Hibernate

SessionFactory
和JPA
EntitymanagerFactory
。会是什么?使用Hibernate作为提供程序的Hibernate的Session
API或JPA的Entitymanager API,但不能两者都使用。

b)您已经定义了一个

HibernateTransactionManager
,但是由于您
EntityManager
在代码中使用,因此需要一个
JpaTransactionManager

<bean id="myTxManager" >    <property name="entityManagerFactory" ref="myEmf"/></bean

这是applicationContext.xml的注释版本:

<?xml version="1.0" encoding="UTF-8"?><beans (...)>    <context:component-scan base-package="pl.m4ks.comics"/>    <context:annotation-config />    <bean id="dataSource"     >        <property name="driverClass" value="com.mysql.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://localhost:8889/comics" />        <property name="username" value="root"/>        <property name="password" value="root" />   </bean>    <!-- use either this: -->    <bean id="entityManagerFactory"    >        <property name="persistenceUnitName" value="main" />        <property name="dataSource" ref="dataSource" />    </bean>    <!-- or this -->    <bean id="sessionFactory"    >         <property name="dataSource"> <ref bean="dataSource"/>        </property>        <property name="packagesToScan">  <value>pl.m4ks.comics</value>        </property>    </bean>    <!-- (but not both) -->    <!-- this is correct for AnnotationSessionFactoryBean, but not if you use         LocalContainerEntityManagerFactoryBean -->     <bean id="txManager"     >        <property name="sessionFactory"> <ref bean="sessionFactory" />        </property>    </bean>    <!-- not necessary, <context:annotation-config /> automatically includes this -->    <bean      />    <tx:annotation-driven transaction-manager="txManager" proxy-target-/></beans>

还有一个设计说明: DAO不应是事务性的。您应该使用管理事务的服务层。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存