0

3 つのエンティティ モデルがあるとします。

History.class
DetilHistory.class
Logs.class

次のようにコードを書く必要があります。

//Create History
History h = new History(new Date(), 1, 1, 1);
h.save();

//Create Detil History
DetilHistory dh = new DetilHistory(1, 1, 1, h.id);
dh.save();

//Create Logs
Logs l = new Logs(1,1,1,dh.id);
l.save();

最初に dh.referecendIdOfHistory の h.id を取得する必要があります。そして、最初に l.referecendIdOfDetilHistory の dh.id を取得する必要があります。

しかし、時々、次のようにそのコードの下の変数 h または dh を変更する必要があります。

h.closeDate= new Date();
h.value = 2;
h.save();

Detil Historyでもやります。

残念ながら、JPAはそのようにすることはできません。JPAがそれを許可しない理由を知っています。

次の点について問題があります。

  • 永続化するために渡された切り離されたエンティティ
  • JPA が初期化されていません

私はそれらを解決しました:

- JPAPluginStartTx(rollback)
- JPA.em().flush(); JPA.em().getTransaction().commit();

誰かがそれを行うための最良の方法を教えてください。

4

1 に答える 1

0

あなたの save() メソッドは何をしますか? EntityManager インスタンスを取得し、em.getTransaction().begin でトランザクションを開き、すべてのエンティティを順番に永続化してから、トランザクションをコミットしてみてください。

于 2012-09-13T19:53:41.943 に答える