gpt4 book ai didi

spring - jpa :repositories tag?的Java配置版本是多少

转载 作者:行者123 更新时间:2023-12-02 05:20:36 25 4
gpt4 key购买 nike

我正在尝试仅使用 Java 配置 JPA。

我认为 @EnableJpaRepositories 相当于 xml 中的 jpa:repositories 标记,但我想事实并非如此?

我的 xml 中有这个:

<jpa:repositories base-package="com.myapp.bla.bla" />

但是如果我删除它并改为使用

@EnableJpaRepositories("com.myapp.bla.bla")

在我的 java 配置中,出现异常 - 我认为从 1.2.0 开始就可以使用 Java 配置 JPA?

编辑:

根本异常是:

No bean named 'entityManagerFactory' is defined

我认为异常与我的配置中的这个定义有关,但如上所述,如果我保留 xml 并将其导入到我的 java 配置中,一切都会正常。

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

factoryBean.setDataSource(dataSource());
factoryBean.setPackagesToScan(new String[] { "com.myapp.bla.bla.model" });
factoryBean.setPersistenceProviderClass(HibernatePersistence.class);
Properties props = new Properties();
props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
factoryBean.setJpaProperties(props);

return factoryBean;
}

最佳答案

问题是您当前的配置创建了一个名为 entityManagerFactoryBean 的 bean。但是,根异常的错误消息表明未找到名为 entityManagerFactory 的 bean。

您有两个选项可以解决此问题(选择您最喜欢的一个):

  1. 将配置 LocalContainerEntityManagerFactoryBean 的方法名称从 entityManagerFactoryBean() 更改为 entityManagerFactory()。这将创建一个名为 entityManagerFactory 的 bean。
  2. @Bean注释的name属性设置为“entityManagerFactory”。换句话说,使用 @Bean(name="entityManagerFactory") 注解来注解配置方法。这样你就可以自己指定bean的名称并确保被注释的方法的名称被忽略。

关于spring - jpa :repositories tag?的Java配置版本是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818836/

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