Судя по вашему логу, вы используете GlassFish.Я предполагаю, что вы также используете JTA.Может быть, вы можете предоставить также код, который получает экземпляр EntityManager?Кроме того, отладка с помощью операторов System.out - это что-то из прошлого, используйте отладчик, иначе ваш код будет трудно читать.Кроме того, ваш отступ неверен.
Прежде всего, если вы используете JTA, взгляните на этот вопрос:
EJBException при вызове entityManager.getTransaction ()
Цитата из принятого ответа:
Недопустимо получать ссылку на экземпляр EntityTransaction, связанный с EntityManager в управляемом контексте Java EE .Из документации API EE Java EntityManager.getTransaction ():
Возвращает объект EntityTransaction уровня ресурсов.Экземпляр EntityTransaction может использоваться последовательно для начала и фиксации нескольких транзакций.
Returns:
EntityTransaction instance Throws:
IllegalStateException - if invoked on a JTA entity manager
Поэтому, если вы ожидаете какой-либо помощи, важно предоставить информацию о коде / внедрении, с помощью которого вы получаетеменеджер сущностей.
Кроме того, для удобства чтения кода не следует делать несколько вызовов em.getTransaction ();Вы должны назначить свой первый вызов объекту Transaction и повторно использовать его, примерно так:
//GOOD cause readable
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(someObject);
tx.commit();
, а не
//BAD cause hard to read
em.getTransaction().begin();
em.persist(someObject);
em.getTransaction().commit(); //NO!