2012-10-29 109 views
0

我们正在将一个大型数据库从一个DBMS转换为另一个。我们主要使用JDBC来完成这项工作,但有一些Hibernate调用混合在一起。到目前为止,数据库的一小部分需要7个小时才能迁移。为了减轻这一点,我们决定我们可以同时迁移数据库的不同部分。我们重写了迁移例程以使用线程。在涉及Java堆空间问题并确保我们在每个线程中都有单独的JDBC和Hibernate会话之后,我们发现自己有最后一个问题:我们正在获取未知实体:无处不在的异常。我们正在创建SchemaExport并在任何迁移线程启动之前执行它。我们缺少什么?未知实体在多线程休眠

+4

您可以发布该异常的完整堆栈跟踪? –

+0

我们解决了我们自己的问题。我们没有在创建模式导出的第一部分中创建会话。一旦我们这样做了,其他所有事情都会顺利进行。 –

回答

1

显然,未知实体是当hibernate不知道异常中引用的类时发生的异常。 例如,针对Myclass类:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: data.Myclass 

你需要有一个<classname>.hbm.xml文件,它对应于Hibernate映射,为了必须由Hibernate知道每一个类,并且还引用为资源这些文件在hibernate的主要配置文件中。 在hibernate.cfg.xml,这是为了让Hibernate了解类Myclass行:

<mapping resource="Myclass.hbm.xml" />