2009-10-16 39 views
1

我有一种情况,我有一个EntitiesSession Bean的树。 Session Bean只是坚持或合并实体,并且所讨论的方法被标记为@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)EJB3/DB2事务没有回滚

现在,在由于(例如)外键冲突或缺少非空字段而导致子实体未能持久/合并的情况下,事务将在要回滚的日志中标记,并且EJBException抛出。我期待整个事务被回滚,但是在EJB会话bean调用返回后,尽管子实体失败,但我发现父数据库出现在数据库中。

是否有其他人看到过这样的行为?其他信息:

Server: Glassfish 
Persistence manager: Toplink 
Connection Pool: DB2 Universal Driver XA compliant driver. 

感谢。

+0

你可以显示引发异常的代码吗? – 2009-10-17 17:23:27

回答

2

看起来Glassfish中的连接池已设置为启用标志“Non Transactional Connections”。这导致失败回滚。