如何从实体管理器设置“非链接事务模式”

时间:2011-05-02 15:40:59

标签: jpa eclipselink

我正在尝试使用来自实体管理器的本机查询调用来调用存储过程,如下所示<

String command = "..."//my stored procedure call command
Query q =  getEntityManager().createNativeQuery(command);

但是当我运行它时,我收到以下消息:

  

例外,程序......可以运行   仅在非链式交易模式下...

我知道如果我有一个连接对象,我可以设置con.setAutoComit(true)来使其工作。 但我的问题是:因为我有一个实体管理器对象,我可以从实体管理器对象以某种方式设置它吗?我想让容器管理所有数据库资源......

我正在使用EclipseLink。

感谢。

还有一点需要注意:我没有对数据库方面的控制权,所以我无法将交易模式改为“任何”。

2 个答案:

答案 0 :(得分:1)

您使用的是哪种数据库/ JDBC驱动程序? 您使用的是Sybase JConnect吗?我认为它存在一些存储过程调用的问题。

如果你无法解决数据库/ drvier上的问题,那么EclipseLink就有了这个选项。

使用SessionCustomizer,您可以设置

session.getLogin().handleTransactionsManuallyForSybaseJConnect();

这仅在EclipseLink控制事务时才有效,而不是JTA。

答案 1 :(得分:0)

我找到了解决方案:

getEntityManager().createNativeQuery("set chained off").executeUpdate();
相关问题