首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityManager是空的,evenAfter添加了springDataJpa依赖项

EntityManager是空的,evenAfter添加了springDataJpa依赖项
EN

Stack Overflow用户
提问于 2021-09-18 09:17:06
回答 2查看 371关注 0票数 0

我试图用下面的行从JPA的SessionFactory创建Hibernate的EntityManager bean,但是EntityManger是空的,我不想在configuration类中扩展为SessionFactory创建bean的JPARepository.Hences。

代码语言:javascript
复制
@Configuration
public class BeanConfig {

    @Autowired
    EntityManager entityManager;

    @Bean
    public SessionFactory getSessionFactory() {

        if (entityManager == null) {
            logger.info("EntityManager is null---");
        } else {
            if (entityManager.unwrap(Session.class) == null) {

                return entityManager.unwrap(Session.class).getSessionFactory();
            }
        }
        return null;
    }
}

在控制台中打印的日志信息: EntityManager为空

pom.xml

代码语言:javascript
复制
<dependencies>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency> 
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
     
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    
     <dependency>
            <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>        
        </dependency>
</dependencies>

application.properties

代码语言:javascript
复制
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=test
spring.datasource.password=test
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
EN

回答 2

Stack Overflow用户

发布于 2021-09-18 13:10:55

我相信您需要使用@EnableJpaRepositories自动装配EntityManager是由Spring模块提供的一个特性。它不是由Spring集成提供的。

也可以使用@PersistenceContext不使用Spring注入EntityManager。这如Spring参考文档https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#dao-annotations所示

票数 0
EN

Stack Overflow用户

发布于 2021-09-19 06:57:29

我的问题得到了解决:

调试内部Springboot代码后,可以在存储库类中获取entityManager实例。

EntityManager实例在configuration中为null,而在Repository类中EntityManager不是null。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69233275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档