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