今天遇到个问题,利用spring将事务配置在了service层,在其中一个业务方法中需要2次调用同一个dao的delete方法,删除某个对象的时候是不一定成功的(有外键引用的话就不能删除),在删除多个对象的时候出现了问题,比如现在删除2个对象,第一个对象是可以删除的,可是第2个对象是删除不了的,这个时候我希望在第二个删除失败的时候,第一个对象也不要被删除,也就是说我想他们处在同一事务中,不知道怎么配置,以下是部分配置!
PROPAGATION_REQUIRED,-Exception、
请大家帮忙!
补充说明:在日志中发现,他是先删除一个对象,然后直接提交事务的!现在知道是这个原因,但是怎么改配置能让他们处于通一事务中呢?
[b]问题补充:[/b]
问题是我现在dao层是没配置事务的啊,但就是第一个被删除了!
请问dao层如果不配置事务的话,那么默认他有没有事务呢?
[b]问题补充:[/b]
配置文件中就是这样配置的
PROPAGATION_REQUIRED,-Exception、
[b]问题补充:[/b]
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
PROPAGATION_REQUIRED,+Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED,-Exception
PROPAGATION_REQUIRED
所有配置
[b]问题补充:[/b]
<bean id="pricingService" class="com.lilg.service.PricingServiceImpl">
<property name="dao">
<ref bean="PricingDAO"/>
</property>
</bean>
[b]问题补充:[/b]
public void delete(Pricing persistentInstance) {
log.debug("deleting Pricing instance");
try {
getHibernateTemplate().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
这个是dao代码,我不清楚你说的配置事务是说明意思?
[b]问题补充:[/b]
PROPAGATION_REQUIRED,-Exception 这里算不算配置事务呢?
[b]问题补充:[/b]
但是很奇怪,现在就是在删除的时候如果第一个删除ok第二个失败的话 第一个不会回滚,在看日志记录的时候发现他在删除第一个的时候开启了事务,然后删除结束后就提交了事务,不知道为什么了? 难道dao不配置默认也是有事务的?
[b]问题补充:[/b]
public void delete(Pricing persistentInstance) {
log.debug("deleting Pricing instance");
try {
getHibernateTemplate().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
这个就是dao代码! 谢谢帮忙
[b]问题补充:[/b]
dao代码贴出来了 是没有事务的!
[b]问题补充:[/b]
回复 constant
我也很奇怪,配置信息及dao代码都贴上来了就是比较郁闷。第一个总是本删除
我看了日志,在删除第一个的时候他打开事务的删除完毕之后就提交事务。
但是我的dao根本是没有配置事务的! 郁闷了
[b]问题补充:[/b]
各位好!我发现问题了! 本来应该是在service方法里调用2次dao里的delete方法,而代码是在action类里2次调用了service类的方法。 哎 还是不够细心的问题 ! 谢谢你的帮忙 ! 谢谢大家的帮忙!