【发布时间】:2017-07-10 17:21:55
【问题描述】:
我可以像这样创建一个 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;
}
}
但使用 @ImportResource 或 @EntityScan 与 jar 的类路径或列出 hbm.xml 文件仍然会产生 not a managed type: class com.opensymphony.workflow.spi.hibernate.HibernateCurrentStep
我看到一些答案,您使用不同的类来生成 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;
}
但是任何使用会话工厂的事务都会得到No CurrentSessionContext configured!,而基本的spring repo方法仍然有效。
【问题讨论】:
标签: hibernate spring-boot