The alternative is to just inject the EJB and call the method directly here.
On Mon, Apr 15, 2013 at 8:14 AM, <to...@orbit-x.de> wrote: > Hi Romain, > > thanks, I already guessed something like this. But is there some pattern > to avoid this or work around or something I could use to make it work? > > Basically it means I may not use any cdi on jpa entities whatsoever and > that is quite a constraint :) > > kind regards > Reinis > > -----Original-Nachricht----- > > Von: "Romain Manni-Bucau" <rmannibu...@gmail.com> > > An: users@tomee.apache.org > > Datum: 15-04-2013 14:09 > > Betreff: Re: JPA issue in combo with @SessionScoped > > > > a conflict between cdi and jpa > > > > > > proxying the jpa entity makes another class created and then the jpa > > provider doesn't find back your entity > > > > *Romain Manni-Bucau* > > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* > > *Blog: **http://rmannibucau.wordpress.com/*< > http://rmannibucau.wordpress.com/> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* > > *Github: https://github.com/rmannibucau* > > > > > > > > 2013/4/15 <to...@orbit-x.de> > > > > > Hi, > > > I have neither pure JPA nor CDI, nor EJB question, it's more of a mix: > > > > > > I have following classes (reasonably simplified) > > > > > > @javax.ejb.Stateless > > > public class UserProducer { > > > > > > @PersistenceContext > > > EntityManager entityManager; > > > > > > //Achtung, it produces a SessionScoped logged in user > > > @Produces @SessionScoped @my.own.LoggedIn > > > public User produceUser() { > > > return entityManager.createQuery(..., User.class).getSingleResult(); > > > } > > > } > > > > > > > > > @javax.ejb.Stateful > > > public class AsyncWorker { > > > > > > @PersistenceContext > > > EntityManager entityManager; > > > > > > @Asynchronous > > > public void invokePersist(User user) { > > > schedulerEntityService.persist(user); > > > } > > > } > > > > > > @RunWith(org.apache.openejb.junit.ApplicationComposer.class) > > > class IntegrationTest { > > > @Inject @LoggedIn > > > User user; > > > > > > @Inject > > > AsyncWorker asyncWorker; > > > > > > @Test > > > public void testIt() { > > > asyncWorker.invokePersist(user); //<- No metadata was found for > type > > > "class my.own.User_$$_javassist_7". The class does not appear in the > list > > > of persistent types: [my.own.User, ...]. > > > } > > > } > > > > > > The OpenJPA throws an org.apache.openjpa.persistence.ArgumentException > No > > > metadata was found for type "class my.own.User_$$_javassist_7". The > class > > > does not appear in the list of persistent types: [my.own.User, ...]. > > > FailedObject: my.own.User_$$_javassist_7-1 [java.lang.String] > > > > > > ONLY IF the producer method produceUser() is annotated as > @SessionScoped. > > > If I remove annotation, the test case works and User entity is being > > > persisted. > > > > > > Can anyone imagine what it could be about? > > > > > > thank you for your ideas and kind regards > > > Reinis > > > > > > > > > > > > > > > > > > >