我知道我可以执行以下操作:
#myList li{display:none;
}
#loadMore {
color:green;
cursor:pointer;
}
#loadMore:hover {
color:black;
}
然后使用public class MyDao{
private EntityManager em;
public void setEm(EntityManager em){
this.em = em;
}
...
传递@PostConstuct
EntityManager
但是由于我的应用程序的体系结构限制,我无法直接将MyDao注入MyBean中,因此我应该通过MyBusinessDao类,因此我尝试了以下操作,但是我得到的public class MyBean{
private EntityManager em;
@Inject
private MyDao myDao;
@PostConstruct
private void init(){
myDao.setEm(em);
}
...
为nullPointerExeception
在MyDao中:
EntityManager
在MyBusinessDao中,我注入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);
}
...
我应该提到我没有使用 public class MyBusinessDao {
private EntityManager em;
@Inject
private MyDao myDao;
@PostConstruct
private void init(){
myDao.setEm(em);
}
...
容器
答案 0 :(得分:2)
您可以实现CDI生产者方法,以通过CDI注入提供EntityManager。
@ApplicationScoped
class EntityManagerProducer {
@PersistenceContext(...)
private EntityManager em;
@Produces
@RequestScoped
public EntityManager produceEm() {
return em;
}
}
您还可以注入EntityManagerFactory并在producer方法中调用emf.createEntityManager()并实现一个CDI-Disposer方法,该方法将在完成作用域之前关闭EntityManager。
public void dispose(@Disposes EntityManager em) { ... }
如果您有多个持久性上下文,则为每个持久性上下文实现一个生产者方法,并使用CDI-Qualifier对它们进行限定。
答案 1 :(得分:-2)
我是这样解决的:
public class MyBusinessDao {
private EntityManager em;
@Inject
private MyDao myDao;
private void setEm(EntityManager em){
this.em = em;
//and here i call the setEm method of myDao also
myDao.setEm(em);
}
...