我正在尝试在 JTA 会话(服务器管理)中执行不相关的查询(other_table),以便在使用 JPA 将 bean EJB 持久化到 DB 之前进行一些验证。
这是我想做的(大约):
@PersistenceUnit(unitName="DynamicDatabase")
EntityManagerFactory emf;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
private long nextEntryid() {
em = emf.createEntityManager();
Query query = em.createQuery("select t from OTHER_TABLE t");
// do some validation and checking
MyTable bean = new MyTable();
em.persist(bean);
}
但是我不断收到服务器错误,它不允许与其他未持久化的数据库项进行交互:
org.apache.openjpa.persistence.ArgumentException:
An error occurred while parsing the query filter (query): The name "OTHER_TABLE" is not a recognized entity (...) Perhaps you meant MyTable, which is a close match.
<persistence-unit name="DynamicDatabase" transaction-type="JTA">
<jta-data-source>jdbc/DB2DynamicConnection</jta-data-source>
<class>jorge.java.dynamicdatabase.db.MyTable</class>
</properties>
</persistence-unit>
问题是:在同一个 JPA DB 连接和 JTA 事务中查询/更改另一个表的正确方法是什么?
对此很陌生,请耐心等待我。在这方面工作了很长时间。
编辑:我不认为这是相关的,但仅供参考,我正在使用WebSphere Liberty Profile 8.5.5.4、JSDK 8u31、EclipseEE Luna 4.4.2 for Web Dev。打算将其添加到标签中。