在春季配置休眠模型发现



我想使用以下代码使用 Hibernate 5 和 JNDI 配置 Spring:

@Configuration
@EnableTransactionManagement
public class ContextDatasource {
@Bean
public LocalSessionFactoryBean sessionFactory() throws NamingException {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("org.database.models");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public PlatformTransactionManager hibernateTransactionManager() throws NamingException {
HibernateTransactionManager transactionManager
= new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
private final Properties hibernateProperties() {
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty(
"hibernate.show_sql", "true");
hibernateProperties.setProperty(
"hibernate.format_sql", "true");
hibernateProperties.setProperty(
"hibernate.hbm2ddl.auto", "create-drop");
hibernateProperties.setProperty(
"hibernate.dialect", "org.hibernate.dialect.MariaDBDialect");
return hibernateProperties;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() 
throws NamingException {
LocalContainerEntityManagerFactoryBean em 
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
return em;
}
@Bean
public DataSource dataSource() throws NamingException {
return (DataSource) new JndiTemplate().lookup("java:/global/production_gateway");
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
}

但是当我部署代码时,我收到错误。看起来我必须添加另一个XML配置文件:

Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}

休眠模型位于 Java 包下的远程 jar 中org.database.models如何使用 Java 代码映射它们?

如果你使用 maven,您可能需要将依赖项添加到您的 pom 文件中

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
</dependency>

为了防止休眠持久性.xml使用,您必须在 LocalContainerEntityManagerFactoryBean 上定义要从中扫描实体的包。

emf.setPackagesToScan(myPackagesToScan);

最新更新