Мой код «HelloJPA» (ниже) пытается сохранить Employee в хранилище данных. Однако любая попытка прочитать постоянный объект после совершения транзакции (локального ресурса) вознаграждается «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) конкретно не затрагивают эту проблему, и примеры кода, которые я обнаружил, использующие локальные транзакции с ресурсами, никогда не пытаются прочитать объект после фиксации ... Но, безусловно, должен быть тривиально простой способ сделать это ??
Заранее спасибо за любую помощь / указатели на это!