有没有办法使用spring jpa LocalContainerEntityManagerFactoryBean 使用现有的传统hibernate映射文件(hbms) . 配置:

  • Hibernate版本:4.2.5.Final,

  • Spring 季版:4.0.3.RELEASE .

在Tomcat 7 servlet容器中运行 .

我同意这是不合理的,但项目经理想要将代码迁移到spring和hibernate 4而不是hbm文件 .

我用jpa注释实体测试了应用程序,它运行得很好 . 但是,我尝试使用它不会 . 我最后写了这样的somothing但是没有用 .

HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
jpaVendorAdapter.setDatabase(Database.MYSQL);
jpaVendorAdapter.setShowSql(true);

LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(configureDataSource());
entityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
entityManagerFactoryBean.setPersistenceXmlLocation("META-INF/persistence.xml");

并在persistence.xml中:

<?xml version="1.0"?>
<persistence version="1.0">
<persistence-unit name="easysApp" >
  <exclude-unlisted-classes>false</exclude-unlisted-classes>

  <properties>
    <!-- Scan for annotated classes and Hibernate mapping XML files -->
    <property name="hibernate.archive.autodetection" value="hbm"/>

    <property name="hibernate.hbm2ddl.auto" value="validate" />
    <property name="hibernate.show_sql" value="true" />
  </properties>
</persistence-unit>
</persistence>

然后我得到这个堆栈跟踪:

WARN 2014-09-19 10:59:00,148 (InputStreamZippedJarVisitor.java:66) - HHH015010: Unable to find file (ignored): jndi:/localhost/Migration
ava.io.FileNotFoundException: jndi:/localhost/Migration
       at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:389)
       at java.net.URL.openStream(URL.java:1037)
       at org.hibernate.ejb.packaging.InputStreamZippedJarVisitor.doProcessElements(InputStreamZippedJarVisitor.java:62)
       at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:149)
       at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:192)
       at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:506)
       at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:861)
       at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:606)
       at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:75)
       at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
       at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
       at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
       at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
       at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)