创建基本存储库类时出错

时间:2017-04-15 01:14:25

标签: spring-mvc

import org.springframework.data.jpa.repository.support.JpaEntityInformation;
import org.springframework.data.jpa.repository.support.QueryDslJpaRepository;
import org.springframework.data.querydsl.EntityPathResolver;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;

@NoRepositoryBean
public class RepositorySupportImpl<T> extends QueryDslJpaRepository<T, Integer> implements RepositorySupport<T> {

    private EntityManager entityManager;


    public RepositorySupportImpl(JpaEntityInformation<T, Integer> entityInformation, EntityManager entityManager, EntityManager entityManager1) {
    super(entityInformation, entityManager);
    this.entityManager = entityManager1;
    }

    public RepositorySupportImpl(JpaEntityInformation<T, Integer> entityInformation, EntityManager entityManager, EntityPathResolver resolver, EntityManager entityManager1) {
    super(entityInformation, entityManager, resolver);
    this.entityManager = entityManager1;
    }

    @Override
    public EntityManager getEntityManager() {
    return this.entityManager;
    }

@Transactional
@Override
public <S extends T> S save(final S entity) {
    this.getEntityManager().persist(entity);
    return entity;
}

}

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QueryDslPredicateExecutor;

import javax.persistence.EntityManager;

public interface RepositorySupport<T> extends JpaRepository<T, Integer>, QueryDslPredicateExecutor<T> {

    EntityManager getEntityManager();

}

在我的配置类中,我有repositoryBaseClass = RepositorySupportImpl.class

但是我收到了这个错误:

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'registerService'的bean时出错:通过字段'userRepository'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'userRepository'的bean时出错:init方法的调用失败;嵌套异常是java.lang.IllegalStateException:在类ca.lighthouse.repository.RepositorySupportImpl上找不到合适的构造函数来匹配给定的参数:[class org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation,class com.sun.proxy ] $ Proxy52。确保实现了这些

的构造函数

3 个答案:

答案 0 :(得分:0)

我现在遇到了同样的问题,经过一些调试后,我找到了解决方案:

确保您只有一个EnableJpaRepositories批注,并且它指向实现类(而不是接口):

@EnableJpaRepositories(repositoryBaseClass = GenericJpaRepositoryImpl.class)

我希望它对以后的人有所帮助;)

答案 1 :(得分:0)

我已经遇到了同样的问题,解决方案是创建正确的构造函数以实现存储库。

    public RepositorySupportImpl(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
    super(entityInformation, entityManager);
}

希望这会有所帮助!

答案 2 :(得分:-1)

感谢您的所有评论,现在正在开展工作。我希望我能明确指出问题,但我不能。这是场景,我有一个spring mvc应用程序,带有控制器,实体,业务服务,jsps,我想清理一下,所以我决定将项目分解为模块。所以我创建了一个新项目,添加了模块,然后将旧项目中的文件复制到新项目中。当我复制RepositorySupport类和接口时,我认为我应该重命名它,就像你上面看到的那样。这导致了这个错误,经过几天的研究和尝试不同的事情,我决定复制原始文件,它的工作原理。这就是我所做的一切,复制文件并更新参考文献。