Как я могу совершить игру!JPA транзакция вручную? - PullRequest
5 голосов
/ 17 ноября 2011

Обычно играют! фиксирует транзакцию после успешного завершения запроса .Как правильно совершить транзакцию вручную в Play?

void addPerson() {
  Person p = new Person("John", "Doe");
  p.save();

  // TODO - commit the transaction

  // Now p should have an ID
  assert p.id != null;
  usePersonIdForSomethingNasty(p.id);
}

Ответы [ 2 ]

5 голосов
/ 17 ноября 2011

Вы можете получить Hibernate EntityManager, вызвав JPA.em (). Затем оттуда у вас есть доступ к транзакции (JPA.em (). GetTransaction ()).

Если вы намереваетесь самостоятельно управлять транзакцией, вам нужно отключить обработку транзакций Play! В противном случае, играть! в любом случае попытается зафиксировать транзакцию в конце запроса, и если вы уже сделали это самостоятельно, это вызовет исключение.

0 голосов
/ 17 ноября 2011

Вам не нужно ничего делать. После того, как запрос завершится без каких-либо исключений, транзакция будет совершена для вас.

Просто убедитесь, что вызываете «save» для всех сущностей, которые вы хотите сохранить в конце транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...