Согласно нашему разговору выше, мне было любопытно, как это сделать, и я смог заставить это работать.По сути, вам нужно создать новый EntityManager и полностью управлять им самостоятельно.Вызов любой из встроенных функций Play (.save (), .merge () и т. Д.) Заставит их использовать EntityManager, который Play настраивает для вас.Однако, если вы вернетесь к стандартным вызовам JPA, это сработает.
// Mapped in routes file as GET /exception
public static void exceptionTest() {
RuntimeException e = new RuntimeException("This is a test");
logException(e);
renderText("You are here");
}
private static void logException(RuntimeException e) {
EntityManager em = JPA.newEntityManager();
Notification n = new Notification();
n.setMessage(e.getMessage());
em.getTransaction().begin();
em.persist(n);
em.getTransaction().commit();
throw e;
}
Это всего лишь быстрый и грязный эксперимент, чтобы доказать свою точку зрения.Вы, очевидно, должны обрабатывать исключения и случаи сбоев в logException (), которые я не обрабатываю.И просто для ясности, Уведомление - это основной объект в моем проекте, который я смог быстро использовать для этого.
Надеюсь, это поможет!