当前位置: 首页 > 知识库问答 >
问题:

通用DAO注射液

慕河
2023-03-14

我的项目有问题

线程“main”组织中出现异常。jboss。焊接例外情况。DeploymentException:WELD-001408:JpaDAO类型与限定符@Default在注入点[BackedAnnotatedField]@InjectPrivate teste的未满足依赖关系。看法最重要的刀

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.
    }

}

我的工厂

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);
    }
}

还有我的校长。java

@Inject private JpaDAO<Veiculo> dao;

我做错了什么?

共有1个答案

琴琪
2023-03-14

生产者方法的返回类型(JPaDAO)不能分配给所需的注入类型(JPaDAO)

 类似资料:
  • 问题内容: 我的web应用程序已经得到了很多服务表/实体,如,,,等。 每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是 实体类本身 。 我知道Hibernate工具可以自动为我生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了 Generic DAO 。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。 我认为这全都是关于泛型的,它将

  • 我希望在我的dao对象中有这样的方法 但我得到了错误 错误:不确定如何将游标转换为此方法的返回类型public abstract java。util。地图 是否可以将其更改为工作版本? 因此,返回的类型可能不同,但主要条件是 数据库中只能有一个查询 我希望避免额外的代码,比如只为这个方法创建额外的数据结构

  • 问题内容: 我的web应用程序已经得到了很多服务表/实体,如,,,等。 每次添加新实体时,都必须编写一个DAO。问题是,它们基本上是相同的,但是唯一的区别是 实体类本身 。 我知道Hibernate工具可以为我自动生成代码,但是我现在不能使用它们(不要问为什么),所以我想到了 Generic DAO 。关于这方面有很多文献,但我无法整理并使其与Spring一起使用。 我认为这全都是关于泛型的,它将

  • 问题内容: 我尝试使用此通用代码,因为我不想为数据库中的每个实体创建一个dao类,因为我有80个专门针对那些我将仅执行CRUD查询的对象。因为在大多数情况下,我只需要坚持或通过ID查找即可。 接口的印象 例外 如何解决这个问题,这意味着什么?为什么我们必须在构造函数中使用它? 当我评论构造函数时,除了我得到了 我这样使用它: 我不想创建一个类并像这样扩展它: 问题答案: 不幸的是,没有任何方法可以

  • 问题内容: 在使用hibernate时,我们将遵循Hibernate Doc中提到的通用Hibernate DAO模式。 因此,据此,我们目前为接口2)维护两个并行的层次结构1)以实现 因此,即使我们在标准持久性方法之外没有提出任何新方法的情况下以这种方式进行工作,我们也需要为该对象及其实现创建标记界面。 尽管这种方法及其明确的分隔似乎没有问题。 我的问题是是否有更好的方法/替代方法来实现这一目标