【发布时间】:2018-08-17 13:48:29
【问题描述】:
我必须进行更改才能使用 Oracle Database 11g Express 而不是 PostgreSQL 9.5.4。我们使用 JPA、Hibernate 3.5.0-Final、Java 8、JBoss、 所以我们有:
entityMgr.open();
entityMgr.begin();
entityMgr.merge(action);
//entityMgr.flush(); // I have tried with and without - same result
//entityMgr.getTransaction().isActive(); // returns true
Object transactionId = entityMgr.createNativeQuery("SELECT DBMS_TRANSACTION.LOCAL_TRANSACTION_ID FROM dual").getSingleResult();
...
由于某种原因,transactionId 始终为空。从我读到的transactionId如果没有事务,则为null,但是据我了解,事务正在运行(如果未注释的transaction.isActive()返回true)。在此操作正常之前,我们已连接到 Oracle db 作为其他操作。当我们使用 Postgress 之前它正常工作时,最后一行被以下替换:
Object transactionId = entityMgr.createNativeQuery("SELECT txid_current()").getSingleResult();
我的代码有什么问题,请问如何在 Oracle 中获取实际的 transactionId?
【问题讨论】:
标签: java sql oracle transactions