Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将jpa与旧版hbm文件一起使用_Java_Spring_Hibernate_Jpa_Orm - Fatal编程技术网

Java 将jpa与旧版hbm文件一起使用

Java 将jpa与旧版hbm文件一起使用,java,spring,hibernate,jpa,orm,Java,Spring,Hibernate,Jpa,Orm,有没有一种方法可以将现有的遗留hibernate映射文件(HBM)与spring jpa一起使用LocalContainerEntityManagerFactoryBean。 配置: Hibernate版本:4.2.5.Final Spring版本:4.0.3.0版本 在Tomcat7servlet容器中运行 我同意这是不合理的,但是项目经理需要将代码迁移到spring和hibernate 4,而不是hbm文件 我用jpa注释的实体测试了这个应用程序,效果非常好。但是,如果我尝试使用hbm,

有没有一种方法可以将现有的遗留hibernate映射文件(HBM)与spring jpa一起使用
LocalContainerEntityManagerFactoryBean
。 配置:

  • Hibernate版本:4.2.5.Final
  • Spring版本:4.0.3.0版本
在Tomcat7servlet容器中运行

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

我用jpa注释的实体测试了这个应用程序,效果非常好。但是,如果我尝试使用hbm,它不会。我最后写了一些这样的东西,但没有成功

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>

您应该只需要您的hbm文件。class元素用于带有
@Entity
注释的类。请尝试删除映射、class元素和属性。属性的名称为
hibernate.archive.autodetection
,并将
hbm,class
作为值。再加上添加
false
,它应该扫描路径中的hbm文件和包含
@Entity
注释的类文件。我尝试了此操作,但检测失败(控制台中没有错误)。我提到我没有任何带有@Entity Annotational的类,那么为什么您需要迁移到JPA?为什么不搬到hibernate4去呢?为您保存数据访问层从普通hibernate到JPA的迁移。普通hibernate就是普通hibernate。因此,这适用于注释或hbm文件。它应该像hibernate3一样工作。这将是一个使用
hibernate4
包中的
LocalSessionFactoryBean
而不是
hibernate3
以及所有其他类的问题,您应该可以开始了。因此,如果唯一的目的是更新到hibernate4,我就不会真正迁移到JPA。
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)