Re: Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation.
Hi Felix, yes, you are right i use two persitence units. And it works now. Thanks! Andreas Am 18.03.15 um 05:23 schrieb Felix Scheffer: Hi Andreas, I assume you have more than one persistence context. In this case you have to add the @PersistenceContext annotation to your onSuccess() method. Otherwise the system doesn't know which persistence context it should use. (The related code is in JpaInternalUtils.getEntityManager() and in EntityManagerManagerImpl) Hope that helps. Felix 2015-03-17 11:16 GMT+01:00 Andreas Ernst a...@ae-online.de: Hi, i got a ejb with two entities. All is working fine, but if i persist the entity, it got this error: Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation. @Inject @PersistenceContext(unitName = de.aeits_ERDA-CCIS-EJB_ejb_1.01PU) private EntityManager entityManager; @Log @CommitAfter Object onSuccess() { logger.log(Level.INFO, erfolgreicher Login von {0}, user); try { Users users = entityManager.find(Users.class, user); logger.log(Level.INFO, User {0}, user); users.setIp(requestGlobal.getHTTPServletRequest().getRemoteAddr()); // entityManager.getTransaction().begin(); entityManager.merge(users); // entityManager.getTransaction().commit(); } catch (Exception e) { logger.log(Level.INFO, Es ist ein Fehler aufgetreten: {0}, e); } return Index.class; } If i remove the annotation @CommitAfter and do it with entityManager.getTransaction().begin() and entityManager.getTransaction().commit(), it works. Any hints? TIA Andreas -- ae | Andreas Ernst | IT Spektrum Postfach 5, 65612 Beselich Schupbacher Str. 32, 65614 Beselich, Germany Tel: +49-6484-91002 Fax: +49-6484-91003 a...@ae-online.de | www.ae-online.de www.tachyon-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- ae | Andreas Ernst | IT Spektrum Postfach 5, 65612 Beselich Schupbacher Str. 32, 65614 Beselich, Germany Tel: +49-6484-91002 Fax: +49-6484-91003 a...@ae-online.de | www.ae-online.de www.tachyon-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation.
Hi, i got a ejb with two entities. All is working fine, but if i persist the entity, it got this error: Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation. @Inject @PersistenceContext(unitName = de.aeits_ERDA-CCIS-EJB_ejb_1.01PU) private EntityManager entityManager; @Log @CommitAfter Object onSuccess() { logger.log(Level.INFO, erfolgreicher Login von {0}, user); try { Users users = entityManager.find(Users.class, user); logger.log(Level.INFO, User {0}, user); users.setIp(requestGlobal.getHTTPServletRequest().getRemoteAddr()); // entityManager.getTransaction().begin(); entityManager.merge(users); // entityManager.getTransaction().commit(); } catch (Exception e) { logger.log(Level.INFO, Es ist ein Fehler aufgetreten: {0}, e); } return Index.class; } If i remove the annotation @CommitAfter and do it with entityManager.getTransaction().begin() and entityManager.getTransaction().commit(), it works. Any hints? TIA Andreas -- ae | Andreas Ernst | IT Spektrum Postfach 5, 65612 Beselich Schupbacher Str. 32, 65614 Beselich, Germany Tel: +49-6484-91002 Fax: +49-6484-91003 a...@ae-online.de | www.ae-online.de www.tachyon-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation.
Hi Andreas, I assume you have more than one persistence context. In this case you have to add the @PersistenceContext annotation to your onSuccess() method. Otherwise the system doesn't know which persistence context it should use. (The related code is in JpaInternalUtils.getEntityManager() and in EntityManagerManagerImpl) Hope that helps. Felix 2015-03-17 11:16 GMT+01:00 Andreas Ernst a...@ae-online.de: Hi, i got a ejb with two entities. All is working fine, but if i persist the entity, it got this error: Unable to locate a single EntityManager. You must provide the persistence unit name as defined in the persistence.xml using the @PersistenceContext annotation. @Inject @PersistenceContext(unitName = de.aeits_ERDA-CCIS-EJB_ejb_1.01PU) private EntityManager entityManager; @Log @CommitAfter Object onSuccess() { logger.log(Level.INFO, erfolgreicher Login von {0}, user); try { Users users = entityManager.find(Users.class, user); logger.log(Level.INFO, User {0}, user); users.setIp(requestGlobal.getHTTPServletRequest().getRemoteAddr()); // entityManager.getTransaction().begin(); entityManager.merge(users); // entityManager.getTransaction().commit(); } catch (Exception e) { logger.log(Level.INFO, Es ist ein Fehler aufgetreten: {0}, e); } return Index.class; } If i remove the annotation @CommitAfter and do it with entityManager.getTransaction().begin() and entityManager.getTransaction().commit(), it works. Any hints? TIA Andreas -- ae | Andreas Ernst | IT Spektrum Postfach 5, 65612 Beselich Schupbacher Str. 32, 65614 Beselich, Germany Tel: +49-6484-91002 Fax: +49-6484-91003 a...@ae-online.de | www.ae-online.de www.tachyon-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org