Java 将jpa与旧版hbm文件一起使用
有没有一种方法可以将现有的遗留hibernate映射文件(HBM)与spring jpa一起使用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,
LocalContainerEntityManagerFactoryBean
。
配置:
- Hibernate版本:4.2.5.Final
- Spring版本:4.0.3.0版本李>
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)