我的“HelloJPA”代码(如下)试图将员工存储在数据存储中。但是,在提交(本地资源)事务后,任何读取持久对象的尝试都会得到“IllegalStateException”的奖励:
Employee employee = ...
EntityManagerFactory factory =
Persistence.createEntityManagerFactory( "HelloJPA", System.getProperties() );
EntityManager manager = factory.createEntityManager();
EntityTransaction transaction = manager.getTransaction();
try {
transaction.begin();
manager.persist( employee );
transaction.commit();
} finally {
if (transaction.isActive()) {
transaction.rollback();
}
manager.close();
}
System.out.println("Employee id == " + employee.getId() ); //<< IllegalStateException
好吧,我想,经理占有了我新分配的员工对象,一旦我提交事务,它就变得不可用。但是,实现这个简单操作的常见习惯用法是什么,即一直将对象写入数据存储区,同时仍保持对它的只读访问权限?文档(教程或 API 参考)没有专门解决这个问题,我发现使用资源本地事务的代码示例似乎在提交后从未尝试读取对象......但肯定有一个非常简单的方法去做吧??
在此先感谢您提供任何帮助/指示!