开发中碰到的几个问题
程序员文章站
2022-03-17 12:21:20
...
1、
碰到异常:
Servlet.service() for servlet action threw exception org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
分析解决:
在spring applicationContext.xml中有定义
<!-- 以AspectJ方式 定义 AOP --> <aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* com.com_name.pro_name.*.service.*Manager.*(..))" advice-ref="txAdvice"/> </aop:config> <!-- 基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置. 默认的设置请参考Spring文档事务一章. --> <tx:advice id="txAdvice"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="find*" read-only="true"/> <tx:method name="save*"/> <tx:method name="update*"/> <tx:method name="remove*"/> <tx:method name="delete*"/> <tx:method name="add*"/> </tx:attributes> </tx:advice>
在
<tx:method
行定义了所有service层可执行数据更新操作的方法规范,必须限于已规定的几个方法名内;
2、
<!----><!----> 在hibernate的级联查询中的排序问题,hibernate annotation @orderby
如下所示:
@OneToMany(fetch = FetchType.LAZY) @JoinColumn(name = "TEM_ID", insertable = false, updatable=false) @OrderBy("playOrder ASC") public List<PlaylistAsset> getAssetList() { return assetList; }
3、带参数的ActionForward转发
String returnForward = "/xxxx.do" + "?method=listAllSub&detail_id=" + detail_id +"&pane_id="+pane_id; return new ActionForward(returnForward);