2011-04-22 139 views
0

我正在从webservice将大量数据加载到数据库中。我正在使用eclipslink进行持久化并在glassfish 3.0上运行应用程序。我碰到了我的测试数据集中的问题,因为有几个外键约束违规。我对违规行为很好,如果数据不完整,我不希望这些数据。然而,我的问题是在容器中抛出异常。然后,这标志着我的回滚事务,并且我根本没有收到任何数据。你可以创建自己的JTA交易吗?

我想继续使用JTA,但不知道我是否可以做我想做的事情,那就是创建我自己的JTA事务,以便我可以控制它提交的时间等。我不确定这是否是一个好主意,尽管我觉得这样做可能会破坏使用JTA的一些好处。

那么是否有可能获得JTA交易?

+0

你从你的尝试持续存在异常吗?你可以在它进入容器并回滚事务之前捕获它吗? – nsfyn55 2011-04-22 17:12:34

+0

像UserTransaction? – fvu 2011-04-22 17:18:26

回答

2

数据库是否在会话bean的方法中工作。用下面的方法标注该方法:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 

它将被赋予它自己的事务。外部交易将在其完成时暂停。

0

http://wiki.eclipse.org/Using_Advanced_Unit_of_Work_API_%28ELUG%29#Integrating_the_Unit_of_Work_with_an_External_Transaction_Servicestrong文字**

了解如何掌握工作的单位与外部事务服务。显然你可以抢夺UserTransaction和/或通过查询容器JNDI的UserTransaction来开始你自己

+0

谢谢,我喜欢@TransactionAttribute,因为它非常简单,但工作单元看起来像我可能会更有创意。 – grantk 2011-04-22 17:22:40

+0

@grantk肯定,但它假定您使用的是一个EJB @TransactionAttribute,它是 – nsfyn55 2011-04-22 17:30:48

相关问题