CMR 1:n情况下,返回对应的Collection时出错

javacoding
03-09-23 1 124

CMR 1:n情况下,返回对应的Collection时出错:
bean1.setbean2(Collection c) 操作成功
但是bean1.getbean2(),得到集合后对集合操作出错
其中事务管理我分别用了required 和requirednew 都不行

java.lang.IllegalStateException: Attempted to access the collection valued cmr-f
ield, 'userInfot', for bean, 'Usert', outside the scope of a transaction. All ac
cess to the collection must be performed during the transaction in which the col
lection was initially retrieved.

javacoding
2003-09-23 17:52

找到原因了:
ejb 2.0规范明确禁止这样做。原因是在事务提交后,cmr field collection在DBMS中的数据可能会在后来通过不可预知的途径改变。跟踪到这些变化是很困难的,结果影响到cmr field collection内容的改变,但这并不是应用期望的,也就是应用并不知道这种变化,导致错误的发生。所以,要求开发人员必须在一个事务里面获取或访问一个cmr-field-collection。