spring怎么事务没有起作用 谢谢

yu_shi_bin 2007-11-26 06:11:59
<beans>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>com/foxt/appcontrol/model/SoDAudit.hbm.xml</value>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.jdbc.batch_size">20</prop> -->
</props>
</property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="AuditDao" class="com.foxt.appcontrol.persistence.impl.hibernate.AuditDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>


<bean id="realSoDAuditService" parent="txProxyTemplate">
<property name="target">
<bean class="com.foxt.appcontrol.application.impl.sodaudit.SoDAuditServiceImpl">
<property name="auditDao" ref="AuditDao"/>
</property>
</bean>

比如auditdao.deleteAudit()方法里面有deleteA(); deleteB();
这时候A被delete拉 b delete出错啦 但是事务却没有回滚, a实实在在的被delete拉
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
seablue_xj 2007-12-01
  • 打赏
  • 举报
回复
<bean id="statisticsService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref bean="statisticsTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="saveStatistics">PROPAGATION_MANDATORY</prop>
<prop key="monthAcount">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

你把它改成这样的形式,注入一个target,指向的是service层的实现,看看
yu_shi_bin 2007-11-30
  • 打赏
  • 举报
回复
谢谢楼上各位的回复
public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao public void removeObject(Class clazz, Serializable id)
throws AppControlPersistenceException {
public void removeObject(Class clazz, Serializable id)
throws AppControlPersistenceException {

getHibernateTemplate().delete(getObject(clazz, id));
}

realSoDAuditService

public void deleteRisks(UserCredentials credentials, List riskIds)
throws AppControlException {

if (riskIds == null)
return;
for (int i = 0; i < riskIds.size(); i++) {
riskDao.removeObject(SoDRisk.class, (Long) riskIds.get(i));
}

已经改为
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>

还是不行


}
rickhunterchen 2007-11-28
  • 打赏
  • 举报
回复
估计你在事务层或者DAO层try...catch了。

所以spring认为你自己管理异常。
danceflash 2007-11-28
  • 打赏
  • 举报
回复
<prop key="*"> PROPAGATION_REQUIRED </prop>

这里好像只会对RuntimeException进行捕捉回滚
你的delete方法抛出的异常是受检的还是运行期的?
yu_shi_bin 2007-11-27
  • 打赏
  • 举报
回复
up
gongyali2005 2007-11-27
  • 打赏
  • 举报
回复
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="*"> PROPAGATION_REQUIRED </prop>
</props>
</property>
</bean>
把abstract="true"改成FALSE,加入TARGET=目标类.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧