gpt4 book ai didi

java - CDI 通用 DAO 注入(inject)

转载 作者:行者123 更新时间:2023-12-01 12:35:34 25 4
gpt4 key购买 nike

我的项目遇到问题

Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type JpaDAO with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private 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;

我做错了什么?

最佳答案

生产者方法的返回类型 (JPaDAO) 无法分配给注入(inject)所需的类型 (JpaDAO )。我相信您需要向生产者方法添加一个类型变量。

关于java - CDI 通用 DAO 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com