2012-06-25 3 views
0

Предположим, у меня есть 3 Entity Model:Как лучший способ совершить транзакцию JPA в моем случае?

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(); 

Я должен получить h.id первым для dh.referecendIdOfHistory. И мне нужно сначала получить dh.id для l.referecendIdOfDetilHistory.

НО, Иногда я должен изменить переменную ч или ДХ ниже этого кода, как это:

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

Я делаю это для истории Detil тоже.

К сожалению, JPA не может этого сделать. Я знаю, почему JPA этого не допускает.

У меня есть вопросы о:

  • отдельностоящий предприятие прошло упорствовать
  • JPA не был инициализирован
  • т.д.

Я решил их:

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

Кто-нибудь, пожалуйста, может Я как лучший способ это сделать?

ответ

0

Что делают ваши методы save()? Возможно, вы могли бы попробовать получить экземпляр EntityManager, открыв транзакцию с помощью em.getTransaction(). Begin, затем сохраняя все сущности в порядке, а затем совершая транзакцию.

Смежные вопросы