【发布时间】:2019-05-26 10:51:35
【问题描述】:
当我尝试在春季批处理中使用我的作业处理器从我的 csv 文件中恢复的一些数据保存在我的数据库中时,此错误出现在控制台中,因为我的 dao 我正在使用休眠
我已经尝试了 2 种方法,但同样的问题!
第一:
Session session = factory.getCurrentSession();
session.saveOrUpdate(p);
秒:
Session session = factory.openSession();
session.beginTransaction();
session.save(p);
session.getTransaction().commit();
session.close();
我的 spring xml 配置中的数据源: 我所有的spring xml配置都在这里https://pastebin.com/RZPr1GKL
<bean name="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/yassir" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>tp.entities.Personne</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven />
错误: javax.persistence.TransactionRequiredException:没有正在进行的事务 在 org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3450) 在 org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1418) 在 org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1414) ...
【问题讨论】:
-
1.由于您使用的是 Hibernate,因此您应该使用 HibernateTransactionManager。 2. 由于您使用的是基于注解的事务,因此应该是事务性的 bean 方法应该使用
@Transactional进行注解。 docs.spring.io/spring/docs/current/spring-framework-reference/… -
我添加了注释@Transactional public void savePersonne(Personne p) { Session session = factory.getCurrentSession(); session.saveOrUpdate(p); } 但问题仍然存在
-
好吧,显然您阅读了我评论的第二部分,但没有阅读第一部分。
-
如何使用 HibernateTransactionManager。 ?
-
如我在第一条评论中发布的链接所示。
标签: spring spring-batch