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

Spring Boot Hibernate包括来自依赖jar的hbm.xml

徐佐
2023-03-14

我可以像这样创建sessionfactory bean。

@Configuration
public class HibernateConfig {

    private EntityManagerFactory emf;

    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory() {
        HibernateJpaSessionFactoryBean fact = new HibernateJpaSessionFactoryBean();
        fact.setEntityManagerFactory(emf);
        return fact;
    }  

    @Autowired
    public HibernateConfig(EntityManagerFactory emf) {
        this.emf = emf;
    }

}

但是,使用带有jar的类路径或列出hbm.xml文件的@EntityScan或@code仍然不能生成托管类型:classcom.opensymphony.workflow.spi.hibernate.HibernateMONtStep

我看到了一些答案,您使用不同的类来生成sessionFactory bean。有没有一种简单的方法可以获取实体管理器创建中包含的映射文件?

我能够扫描hbm。xml文件

 @Bean 
 public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
     LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
     em.setDataSource(dataSource);
     em.setPackagesToScan("com.foo.bar.domain");

     em.setMappingResources("classpath:x/HibernateCurrentStep.hbm.xml",
    "classpath:x/HibernateHistoryStep.hbm.xml",
    "classpath:x/HibernateWorkflowEntry.hbm.xml");

    HibernateJpaVendorAdapter vendor = new HibernateJpaVendorAdapter();
    vendor.setShowSql(false);
    em.setJpaVendorAdapter(vendor);
    return em;
}

但是,然后任何使用会话工厂的事务都将获得未配置MONtSessionContext!而基本的Spring repo方法仍然有效。

共有1个答案

蒋烨然
2023-03-14
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
  LocalContainerEntityManagerFactoryBean em = new 
  LocalContainerEntityManagerFactoryBean();
  em.setDataSource(dataSource);
  em.setPackagesToScan("com.foo.bar.domain");

  em.setMappingResources("com/opensymphony/workflow/spi/hibernate3/HibernateCurrentStep.hbm.xml",
     "com/opensymphony/workflow/spi/hibernate3/HibernateHistoryStep.hbm.xml",
     "com/opensymphony/workflow/spi/hibernate3/HibernateWorkflowEntry.hbm.xml"); 
  //these needed to be added to have all hibernate config done in one place. 
 em.getJpaPropertyMap().put(AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS, 
      SpringSessionContext.class.getName());
 em.getJpaPropertyMap().put(AvailableSettings.DIALECT,
      PostgreSQL9Dialect.class.getName());

  HibernateJpaVendorAdapter vendor = new HibernateJpaVendorAdapter();
  vendor.setShowSql(false);
  em.setJpaVendorAdapter(vendor);
  return em;
}
 类似资料:
  • 我正在尝试开发一个游戏插件(oldschool runescape)。我正在尝试加入组织。json,以便更容易读取/写入游戏状态和内容,但似乎不知道如何将其发送到package org。json和我的插件。它可以很好地编译,但不能与该包一起运行。有什么帮助吗? 这就是我的插件。格雷德尔。kts看起来像 编辑:我尝试了compileOnly、implementation、testImplementa

  • 我正在开发一个Java项目,使用maven作为依赖项管理器/构建工具。我当前在将依赖项的依赖项解析到正确版本时遇到问题。 有问题的依赖项称为JasperReports-Functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的。 如何强制jar依赖项使用子依赖项的某个版本?

  • 我正试图让maven下载所有的依赖项(编译、测试、插件等)。)这样我就可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们。 我们已经对maven build进行了dockerized,这样我们就可以从jenkins运行它,而无需在jenkins机器上安装大量构建特定的依赖项(Java、redis、maven依赖项等)。我们的构建依赖于增量docker构建,它只执行实际需要

  • Gradle 支持从 Maven 或 Ivy 仓库中拉取依赖文件。首先必须将仓库添加到列表中,然后必须在 dependencies 中添加 Maven 或 Ivy 声明的包。 repositories { jcenter() } dependencies { compile 'com.google.guava:guava:18.0' } android { ... } 注意

  • 配置 jar 包需要在 compile 中添加响应依赖。下面的代码添加了 libs 文件夹中的所有 jar 作为依赖。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } android { ... } 注意:dependencies DSL 标签是标准 Gradle API 中的一部分,所以它不属于

  • 问题内容: 我正在尝试用Spring 3.0(和Maven)做我的第一个项目。我已经在许多项目中使用Spring 2.5(和入门版本)。尽管如此,我还是有些困惑,我必须在pom.xml中将哪些模块定义为依赖项。我只想使用核心容器功能(bean,核心,上下文,el)。 我曾经这样做: 但是现在我有点困惑,因为不再有用于3.0版的完整包装的spring模块。我尝试了以下操作,但是没有用(缺少某些类)。