2014-09-02 65 views
0

我有螺纹与我的项目CDI通用DAO注入

异常问题的“主” org.jboss.weld.exceptions.DeploymentException:WELD-001408:不满意的依赖关系类型JpaDAO与预选赛@default 在注射点[BackedAnnotatedField] @注入私人teste.view.Principal.dao

JpaDAO(只是用于测试,没有完全实现):

package teste.cdihibernate; 

import java.util.List; 
import javax.persistence.EntityManager; 

public class JpaDAO<T> implements DAO<T> 
{ 
    private EntityManager em; 
    private final Class<T> classe; 

    public JpaDAO(Class<T> classe, EntityManager em) 
    { 
     this.classe = classe; 
     this.em = em; 
    } 

    @Override 
    public void save(T entity) 
    { 
     em.persist(entity); 
    } 

    @Override 
    public void update(T entity) 
    { 

    } 

    @Override 
    public void remove(T entity) 
    { 
     em.remove(entity); 
    } 

    @Override 
    public T getById(Class<T> classe, Long pk) 
    { 
     return em.find(classe, pk); 
    } 

    @Override 
    public List<T> getAll(Class<T> classe) 
    { 
     List<T> resultList = (List<T>) em.createQuery("select e from " + classe.getSimpleName() + " e").getResultList(); 
     return resultList; 
    } 

    @Override 
    public T getByRestriction(Class<T> classe, String attribute, String filter) 
    { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

} 

DAOFactory

public class DAOFactory 
{ 
    @Inject private EntityManager em; 

    @SuppressWarnings({ "rawtypes", "unchecked" })  
    @Produces 
    @Dependent 
    public JpaDAO createJpaDAO(InjectionPoint point) throws ClassNotFoundException 
    { 
     ParameterizedType type = (ParameterizedType) point.getType(); 
     Class classe = (Class) type.getActualTypeArguments()[0]; 
     return new JpaDAO(classe, em); 
    } 
} 

而且我Principal.java

@Inject private JpaDAO<Veiculo> dao; 

我在做什么错?

回答

1

生产者方法的返回类型(JPaDAO)不能分配给所需的注入类型(JpaDAO <Veiculo>)。我相信你需要在生产者方法中添加一个类型变量。

+0

感谢您的回答,以这种方式工作:public JpaDAO createJpaDAO(InjectionPoint point)throws ClassNotFoundException – 2014-09-02 20:22:50