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 <[email protected]>

> 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
>
>
>
>
>

Reply via email to