java – 设置构造函数参数时无法解析对bean’entalManagerFactory’的引用;
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 设置构造函数参数时无法解析对bean’entalManagerFactory’的引用;,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3975字,纯文字阅读大概需要6分钟。
内容图文
![java – 设置构造函数参数时无法解析对bean’entalManagerFactory’的引用;](/upload/InfoBanner/zyjiaocheng/775/53cc387e9eb14513813169a34cee9669.jpg)
我在我的代码中收到此错误.
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name ‘roleRepository’: Cannot create inner bean
‘(inner bean)#7540dc57’ of type
[org.springframework.orm.jpa.SharedEntityManagerCreator] while setting
bean property ‘entityManager’; nested exception is
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name ‘(inner bean)#7540dc57’: Cannot resolve
reference to bean ‘entityManagerFactory’ while setting constructor
argument; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
bean named ‘entityManagerFactory’ available
我看到了这些:
Cannot resolve reference to bean ‘entityManagerFactory’ while setting constructor argument
NoSuchBeanDefinitionException: No bean named ‘entityManagerFactory’ available
NoSuchBeanDefinitionException: No bean named ‘entityManagerFactory’ is defined
他们都没有回答我的问题.问题是我能够解决问题,但我有一个问题.
让我分享我的相关代码,然后问我的问题.
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerF() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] {"com.gitreporter"});
JpaVendorAdapter jpaAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(jpaAdapter);
em.setJpaProperties(jpaProperties());
return em;
}
@Bean
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory emf) {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(emf);
return jpaTransactionManager;
}
private final Properties jpaProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
return properties;
}
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/MyDBNAME?useSSL=false");
dataSource.setUsername("username");
dataSource.setPassword("password");
return dataSource;
}
问题出在这条线上:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerF() {
我将medhod名称更改为entityManagerFactory,如下所示:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
使上下文中的工厂bean的名称等于“entityManagerFactory”,因为默认情况下,除非明确指定,否则bean的名称将等于方法名称.
我的问题:JPA API中是否存在“按惯例”它在Spring容器中寻找名为“entityManagerFactory”的EntityManagerFactory bean?当方法的名称是“entityManagerF”时,为什么它不起作用?
这是代码的其余部分:
@NoRepositoryBean
public interface GenericRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
public List<T> findByAttributeContainsText(String attributeName, String text);
}
public class GenericRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID>
implements GenericRepository<T, ID> {
private EntityManager entityManager;
public GenericRepositoryImpl(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
this.entityManager = entityManager;
}
}
public interface RoleRepository extends GenericRepository<Role, Long> {
}
解决方法:
我找到了答案.
查看documentation以获取@EnableJpaRepositories注释.
在可选元素中,您将看到:
entityManagerFactoryRef
Configures the name of the EntityManagerFactory bean definition to be used to create repositories discovered through this annotation.
在页面下方查看详细信息,您将看到:
entityManagerFactoryRef
public abstract String entityManagerFactoryRef
Configures the name of
the EntityManagerFactory bean definition to be used to create
repositories discovered through this annotation. Defaults to
entityManagerFactory.Returns:
Default: “entityManagerFactory”
因此,这种“常规”默认配置来自@EnableJpaRepositories注释本身.
内容总结
以上是互联网集市为您收集整理的java – 设置构造函数参数时无法解析对bean’entalManagerFactory’的引用;全部内容,希望文章能够帮你解决java – 设置构造函数参数时无法解析对bean’entalManagerFactory’的引用;所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。