当前位置: 首页 > 知识库问答 >
问题:

Spring Boot2.1和Hibernate5.3SessionFactory在用@repository注释Dao类时没有自动生成

石臻
2023-03-14

当我在用@repository spring注释注释的Dao实现中自动连接hibernate会话工厂时,它无法创建SessionFactory和Dao bean,但它在没有@repository注释的情况下工作。

我搜索了很多问题和答案,但都与hibernate和spring boot的早期版本有关,比如展开和创建会话工厂bean,但所有这些方法都与Spring-Boot2.1和最新的hibernate版本不兼容。

@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private SessionFactory sf;

    @Override
    public void addUser(User user) {
        Session session = sf.getCurrentSession();
        session.save(user);
    }


}
@Configuration
public class DataConfig {
    @Bean
    public SessionFactory sessionFactory(@Autowired EntityManagerFactory factory) {
            if (factory.unwrap(SessionFactory.class) == null) {
                throw new NullPointerException("factory is not a hibernate factory");
            }
            return factory.unwrap(SessionFactory.class);
    }

}

It课程“应用程序上下文中一些bean的依赖关系形成了一个循环:”错误

共有1个答案

澹台啸
2023-03-14
@Bean
public SessionFactory sessionFactory() {
    LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource());
    sessionBuilder.scanPackages("com.your.domain.package");
    return sessionBuilder.buildSessionFactory();
}

@Bean
public DataSource dataSource() {
    final HikariConfig config = new HikariConfig();
    config.setMinimumIdle(Integer.valueOf(env.getProperty("spring.datasource.minimumIdle")));
    config.setMaximumPoolSize(Integer.valueOf(env.getProperty("spring.datasource.maximumPoolSize")));
    config.setIdleTimeout(Integer.valueOf(env.getProperty("spring.datasource.idleTimeout")));
    config.setConnectionTestQuery("SELECT 1");
    config.setDataSourceClassName(env.getProperty("spring.datasource.className"));
    config.addDataSourceProperty("url", env.getProperty("spring.datasource.url"));
    config.addDataSourceProperty("user", env.getProperty("spring.datasource.username"));
    config.addDataSourceProperty("password", env.getProperty("spring.datasource.password"));
    return new HikariDataSource(config);
}

@先生。不错,改变你的配置,这样才能解决这个问题。

 类似资料:
  • 我还想在自动生成getter和setter时生成注释 Android Studio: 我想要:

  • 问题内容: 我正在看工作区中的一些旧示例。由于没有 @Autowired, 我看不到自动 装配的方式 。Spring Boot + Facebook默认配置。 它工作完美,但是这些bean如何在没有@Autowired的情况下自动进行自动连线? 它们是作为字段或在构造函数中自动接线的吗? 问题答案: 借助Spring Boot 1.4+,构造函数将自动进行自动接线 https://docs.spr

  • 我试图执行一个集成测试,我的类与@Transactional注释不能自动连接到一个测试类与NoSuchBean定义异常。我把它注释出来,检查了一份装载豆子的列表,我的服务就在那里,只是没有注射。 组织。springframework。豆。工厂BeanCreationException:创建名为“com”的bean时出错。icsynergy。西姆。服务DBIntegrationServiceTest

  • 问题内容: 如何在Eclipse中自动生成基于xml的函数标头注释(@param等)。在Visual Studio中是否有等效的“ ///”快捷方式。 问题答案: 在方法定义之前的那一行中,键入并按Enter。 在IDE中,在方法前键入,然后按Enter。Eclipse将自动生成Javadoc标记并结束

  • 我正在开发一个spring boot应用程序,我遇到了一个问题。我正在尝试注入一个@Repository注释接口,但它似乎根本不起作用。我收到这个错误 实体类: 存储库接口: 控制器:

  • 和和注释之间有什么区别? 我们应该在什么时候使用它们每一个?