Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring数据jpa创建名为的bean时出错_Java_Spring_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Java spring数据jpa创建名为的bean时出错

Java spring数据jpa创建名为的bean时出错,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我是一个新手开发人员。不久前,我开始学习'jpa'。 我用java配置创建了一个spring项目 我的项目规范: Java:1.8 servlet:3.1 spring:4.3.2.发布 tomcat:8.5 spring数据jpa 2.0.0.发行版 hibernate 5.1.0.Final 我的代码: ServletConfig.class @Configuration @EnableWebMvc

我是一个新手开发人员。不久前,我开始学习
'jpa'
。 我用java配置创建了一个spring项目

我的项目规范:

  • Java:1.8

  • servlet:3.1

  • spring:4.3.2.发布

  • tomcat:8.5

  • spring数据jpa 2.0.0.发行版

  • hibernate 5.1.0.Final

我的代码:

ServletConfig.class

@Configuration                                      
@EnableWebMvc                                       
@ComponentScan(basePackages = "com.knk.spring4")    
public class ServletConfig extends WebMvcConfigurerAdapter {
........
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.knk.spring4.repository") 
public class PersistenceConfig {
.....
    @Bean(name = "entityManagerFactory")
    public EntityManagerFactory entityMangerFactory() {

        logger.info("EntityMangerFactory");

        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setPersistenceUnitName("springDataTest");
        emf.setDataSource(getDataSource()); 
        emf.setPackagesToScan(new String[] {"com.knk.spring4.entity"}); 

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emf.setJpaVendorAdapter(vendorAdapter);
        emf.setJpaProperties(additionalProperties());
        emf.afterPropertiesSet();

        return emf.getObject();
    }
.......
}
@Entity
@Table(name = "MEMBER_KNK")
@SequenceGenerator(name = "MEMBERIDX_SEQ_GENERATOR"
                    , sequenceName = "MEMBERIDX_SEQ"
                    , initialValue = 1)
public class MemberEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE
                    , generator = "MEMBERIDX_SEQ_GENERATOR")
    private long memberIdx;
........
}
@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {

    @Query("select m from MemberVO m where m.id=:id")
    public MemberEntity getMemberIDbyId(@Param("id") String id);
}
@Service
@Transactional
public class MemberService {

    @Autowired 
    private MemberRepository memberRepository;
........
}
PersistenceConfig.class

@Configuration                                      
@EnableWebMvc                                       
@ComponentScan(basePackages = "com.knk.spring4")    
public class ServletConfig extends WebMvcConfigurerAdapter {
........
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.knk.spring4.repository") 
public class PersistenceConfig {
.....
    @Bean(name = "entityManagerFactory")
    public EntityManagerFactory entityMangerFactory() {

        logger.info("EntityMangerFactory");

        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setPersistenceUnitName("springDataTest");
        emf.setDataSource(getDataSource()); 
        emf.setPackagesToScan(new String[] {"com.knk.spring4.entity"}); 

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emf.setJpaVendorAdapter(vendorAdapter);
        emf.setJpaProperties(additionalProperties());
        emf.afterPropertiesSet();

        return emf.getObject();
    }
.......
}
@Entity
@Table(name = "MEMBER_KNK")
@SequenceGenerator(name = "MEMBERIDX_SEQ_GENERATOR"
                    , sequenceName = "MEMBERIDX_SEQ"
                    , initialValue = 1)
public class MemberEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE
                    , generator = "MEMBERIDX_SEQ_GENERATOR")
    private long memberIdx;
........
}
@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {

    @Query("select m from MemberVO m where m.id=:id")
    public MemberEntity getMemberIDbyId(@Param("id") String id);
}
@Service
@Transactional
public class MemberService {

    @Autowired 
    private MemberRepository memberRepository;
........
}
MemberEntity.class

@Configuration                                      
@EnableWebMvc                                       
@ComponentScan(basePackages = "com.knk.spring4")    
public class ServletConfig extends WebMvcConfigurerAdapter {
........
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.knk.spring4.repository") 
public class PersistenceConfig {
.....
    @Bean(name = "entityManagerFactory")
    public EntityManagerFactory entityMangerFactory() {

        logger.info("EntityMangerFactory");

        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setPersistenceUnitName("springDataTest");
        emf.setDataSource(getDataSource()); 
        emf.setPackagesToScan(new String[] {"com.knk.spring4.entity"}); 

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emf.setJpaVendorAdapter(vendorAdapter);
        emf.setJpaProperties(additionalProperties());
        emf.afterPropertiesSet();

        return emf.getObject();
    }
.......
}
@Entity
@Table(name = "MEMBER_KNK")
@SequenceGenerator(name = "MEMBERIDX_SEQ_GENERATOR"
                    , sequenceName = "MEMBERIDX_SEQ"
                    , initialValue = 1)
public class MemberEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE
                    , generator = "MEMBERIDX_SEQ_GENERATOR")
    private long memberIdx;
........
}
@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {

    @Query("select m from MemberVO m where m.id=:id")
    public MemberEntity getMemberIDbyId(@Param("id") String id);
}
@Service
@Transactional
public class MemberService {

    @Autowired 
    private MemberRepository memberRepository;
........
}
MemberRepository.class

@Configuration                                      
@EnableWebMvc                                       
@ComponentScan(basePackages = "com.knk.spring4")    
public class ServletConfig extends WebMvcConfigurerAdapter {
........
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.knk.spring4.repository") 
public class PersistenceConfig {
.....
    @Bean(name = "entityManagerFactory")
    public EntityManagerFactory entityMangerFactory() {

        logger.info("EntityMangerFactory");

        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setPersistenceUnitName("springDataTest");
        emf.setDataSource(getDataSource()); 
        emf.setPackagesToScan(new String[] {"com.knk.spring4.entity"}); 

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emf.setJpaVendorAdapter(vendorAdapter);
        emf.setJpaProperties(additionalProperties());
        emf.afterPropertiesSet();

        return emf.getObject();
    }
.......
}
@Entity
@Table(name = "MEMBER_KNK")
@SequenceGenerator(name = "MEMBERIDX_SEQ_GENERATOR"
                    , sequenceName = "MEMBERIDX_SEQ"
                    , initialValue = 1)
public class MemberEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE
                    , generator = "MEMBERIDX_SEQ_GENERATOR")
    private long memberIdx;
........
}
@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long> {

    @Query("select m from MemberVO m where m.id=:id")
    public MemberEntity getMemberIDbyId(@Param("id") String id);
}
@Service
@Transactional
public class MemberService {

    @Autowired 
    private MemberRepository memberRepository;
........
}
我收到的错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController': Unsatisfied dependency expressed through field 'memberService': Error creating bean with name 'memberService': Unsatisfied dependency expressed through field 'memberRepository': Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberService': Unsatisfied dependency expressed through field 'memberRepository': Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:540)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberService': Unsatisfied dependency expressed through field 'memberRepository': Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
    ... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
    ... 42 more
Caused by: java.lang.AbstractMethodError
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:99)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:302)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    ... 52 more
我想这就是问题所在

ServletConfig.class
PersistenceConfig.class
pacagescan

所以我做了

@ComponentScan(basePackages = {"com.knk.spring4.controller", "com.knk.spring4.repository", "com.knk.spring4.service"})

我尝试了Basepackages路径上的所有'*'和'**'。

尝试将@Query(“从MemberVO m中选择m,其中m.id=:id”)替换为
@Query(“从MemberEntity m中选择m,其中m.memberIdx=:id”)

我相信这与您的jar版本有关。尝试更改servlet或spring jpa的版本…spring数据jpa 2需要spring 5。尝试在查询中更改..这将解决您的问题
public MemberEntity getMemberIDbyId(@Param(“id”)Long id)。因为您的实体类id是
长的
类型..谢谢大家的回答,谢谢大家!问题是“SpringDataJPA”的一个版本。再次感谢。这并不能解决Spring类中的“java.lang.AbstractMethodError”问题。错误在于创建存储库,所以可能是出了问题,查询似乎与实体类的名称不兼容,所以这可能不是唯一的问题,但我看不出该查询是如何工作的。@BillyFrost。。查看异常
java.lang.AbstractMethodError
,当应用程序尝试调用抽象方法时会引发此异常。通常,编译器会捕获此错误;只有在运行时,如果自上次编译当前执行的方法以来某个类的定义发生了不兼容的更改,才会发生此错误。而且
MemberRepository
是接口,it内容抽象方法当然
getMemberIDbyId
是抽象方法。我认为这个解释对您来说是可以的。这不是类路径问题..我也面临同样的问题。。