I know i can do the following :
public class MyDao{
private EntityManager em;
public void setEm(EntityManager em){
this.em = em;
}
...
and then, using @PostConstuct
to pass the EntityManager
public class MyBean{
private EntityManager em;
@Inject
private MyDao myDao;
@PostConstruct
private void init(){
myDao.setEm(em);
}
...
But due to my application's architecture restriction i cannot directly inject MyDao into MyBean, i should pass by MyBusinessDao Class, so i tried the following but i'm getting a nullPointerExeception
on the value of EntityManager
in MyDao :
public class MyBean{
private EntityManager em;
public MyBean(){
em = createEntityManager();
}
private EntityManager createEntityManager(){
//dynamically create the EntityManager
}
@Inject
private MyBusinessDao myBusinessDao;
@PostConstruct
private void init(){
myBusinessDao.setEm(em);
}
...
and in MyBusinessDao i inject MyDao:
public class MyBusinessDao {
private EntityManager em;
@Inject
private MyDao myDao;
@PostConstruct
private void init(){
myDao.setEm(em);
}
...
I should mention that i'm not using a J2EE
container