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