发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

请教CMP并发访问时的事务问题

2004-08-04 20:17
赞助商链接

2004-08-04 17:35:37,656 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract void org.glide.ejbglide.Student.setAid_code_id(java.lang.String), causedBy:
org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=kgd//472865, BranchQual=] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.ejb.EJBException: Update failed. Expected one affected row: rowsAffected=2id=1091612137375)
at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:413)

关键代码如下:
while(iter.hasNext())
{
org.glide.data.Student studata=(org.glide.data.Student)iter.next();
try {
org.glide.ejbglide.Student stucmp = stuHome.create(Long.toString(System.currentTimeMillis()));
stucmp.setAid_code_id(studata.getAid_code_id());
stucmp.setBIRTHDAY(studata.getBirthday());
stucmp.setDISTRICT_CODE(studata.getDistrict_code());

我只是简单向数据库中插入数据。为什么多个人并发访问的时候就会出现上面的异常呢?

2004-08-10 12:50

你这段代码需要在Session Bean中执行。
不要在while中操作过长。可使用CMP的批量更新语句。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com