jpa自定义封装查询,继承JpaRepositoryFactoryBean出错!

直接上代码,在线等求各位大神帮忙!
package com.example.rui.core.japcreatelike;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.core.support.RepositoryFactorySupport;

import javax.persistence.EntityManager;
import java.io.Serializable;

/**

  • Created by win10 on 2017/6/16 0016.
    */
    public class CustomRepositoryFactoryBean, S, ID extends Serializable>
    extends JpaRepositoryFactoryBean{
    @Override
    protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
    return new CustomRepositoryFactory(entityManager);
    }

    private static class CustomRepositoryFactory extends JpaRepositoryFactory {
    public CustomRepositoryFactory(EntityManager entityManager) {
    super(entityManager);
    }

    @Override
    protected <T, ID extends Serializable> SimpleJpaRepository<?, ?> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {
        return new CustomRepositoryImpl<T, ID>((Class<T>) information.getDomainType(), entityManager);
    }
    
    @Override
    protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
        return CustomRepositoryImpl.class;
    }
    

    }
    }
    图片说明

我也遇到同样的问题,你解决了吗?方便告诉我一下吗?

没有构造函数,Intellj 的话用快捷键Alt+Insert 然后选Constructor自动构造一个就好了。原因是JapRepositiryFactoryBean中没有定义显示和隐试的构造函数,所以子类必须要求定义一个显示的构造函数。
因此直接添加
public CustomRepositoryFactoryBean(Class<? extends T> repositoryInterface) {
super(repositoryInterface);
}
即可