0
Java Persistence APIを使用してレコードを正常に作成、結合、フェッチできましたが、レコードを削除できません。私はem.createNativeQuery( "Delete ...")を使用しましたが、うまくいきました。問題はエンティティマネージャを使ってその問題を解決したいということです。私は、上記のコードをDerbyで試してみたところ、oracleデータベースで問題が発生する可能性があると思います。Java永続性apiレコードOracleデータベースを削除/削除しない11g XE
public void destroy(String id) throws NonexistentEntityException, RollbackFailureException, Exception {
EntityManager em = null;
Context initCtx = new InitialContext();
utx = (UserTransaction) initCtx.lookup("java:comp/env/UserTransaction");
try {
utx.begin();
em = getEntityManager();
//Query query = em.createNativeQuery("DELETE FROM SERVICIO WHERE SERVICIODESCRIPCION = '"+id+"'");
//query.executeUpdate();
Servicio servicio;
try {
servicio = em.getReference(Servicio.class, id);
servicio.getServiciodescripcion();
} catch (EntityNotFoundException enfe) {
throw new NonexistentEntityException("The servicio with id " + id + " no longer exists.", enfe);
}
em.remove(servicio);
utx.commit();
} catch (Exception ex) {
try {
utx.rollback();
} catch (Exception re) {
throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
}
throw ex;
} finally {
if (em != null) {
em.flush();
em.close();
}
}
}
何が問題なのですか?例外が発生するか、単純にレコードが削除されませんか? – niceman
レコードが削除されず、glassfishサーバーにエラーメッセージや例外がないため、Oracleデータベースが請願を受け取ったかどうかを確認しようとしましたが、方法がわかりません。私はコードをデバッグし、コンテキストからオブジェクトを取得します。 –
また、主キーは文字列ですが、それが問題になると思いますか? –