您的位置:首页 > 产品设计 > UI/UE

解决InvalidDataAccessApiUsageException: Executing an update/delete query

2014-01-28 10:07 375 查看
@Modifying
@Query("delete from Task task where task.user.id=?1")
void deleteByUserId(Long id);


出现Executing an update/delete query的原因是没有事务

处理事务可以采用两种方法:

第一种直接:

@Modifying@Transactional
@Query("delete from Task task where task.user.id=?1")
void deleteByUserId(Long id);


在后面加上@Transactional让spirng来管理事务

第二种可以采用AOP声明式事务来管理:

<tx:advice id="dao" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="deleteByUserId*" read-only="false"/>

<!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到session-->
<tx:method name="*"  propagation="REQUIRED" /><!-- 他就是允许所有的方法都有session <tx:method name="*"  propagation="REQUIRED" />-->

</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="daoMethods" expression="execution(* com.hblb.develop.repository..*.*(..))"/><!--第二种 expression="execution(* com.service.*.*(..))"  。。代表service下的所有  -->
<aop:advisor advice-ref="dao" pointcut-ref="daoMethods" />
</aop:config>


这样就可以解决没有事务而出现的InvalidDataAccessApiUsageException: Executing an update/delete query
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐