私の "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
OK、私はマネージャーが新しく割り当てられた従業員オブジェクトを所有し、トランザクションをコミットすると使用できなくなったと思います。しかし、この単純な操作を実装するための一般的なイディオムは何ですか?つまり、オブジェクトへの読み取り専用アクセスを維持しながら、データストアまでずっとオブジェクトを書き込みますか? ドキュメント (チュートリアルまたは API リファレンス) はこれに具体的に対処しておらず、リソース ローカル トランザクションを使用することがわかったコード サンプルは、コミット後にオブジェクトを読み取ろうとしないようです ... しかし、確かに簡単な方法が必要です。それをするために??
これに関するヘルプ/ポインタを事前にありがとう!