【问题标题】:db2 hibernate hbm2ddl table not found errordb2 hibernate hbm2ddl table not found 错误
【发布时间】:2012-10-06 17:25:16
【问题描述】:

我在尝试执行单元测试时遇到了以下问题。我正在使用内存中的数据库(为此我使用了 h2 和 hsqldb,但它们都让我遇到了同样的错误)。

具有以下 hibernate.cfg.xml 文件:

<hibernate-configuration>
<session-factory>
 <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
 <property name="hibernate.connection.driver_class">org.h2.Driver</property>
 <property name="hibernate.connection.url">jdbc:h2:mem:news;INIT=create schema IF NOT EXISTS news</property>
 <property name="hibernate.c3p0.min_size">5</property>
 <property name="hibernate.c3p0.max_size">20</property>
 <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
 <property name="hibernate.connection.autocommit">false</property>
 <property name="current_session_context_class">thread</property>
 <property name="hibernate.hbm2ddl.auto">create-drop</property>
 <property name="show_sql">false</property>
 <mapping resource="com/mycom/common/List.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/Info.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/User.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/Category.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/Topic.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/CategoryRelation.hbm.xml"></mapping>
 <mapping resource="com/mycom/common/TopicRelation.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>

CategoryRelation.hbm.xml 和 TopicRelation.hbm.xml 的目的只是中间表,其中包含 Category/Topic 表(主数据表)和其他表之间的映射。

在 sessionFactory 创建期间通过 hbm2ddl 自动生成数据库时,会出现以下问题:

2012-10-16 16:36:35,448 DEBUG [main] com.mchange.v2.c3p0.impl.NewPooledConnection  - com.mchange.v2.c3p0.impl.NewPooledConnection@af4627 handling a throwable.
org.h2.jdbc.JdbcSQLException: Table "T_RELATIONTOCATEGORY" not found

对于 t_relationtoTopic 也是如此。

CategoryRelation.hbm.xml 文件的摘录

<hibernate-mapping>
 <class name="com.yell.news.model.CategoryRelation" table="t_relationToCategory">
...
</hibernate-mapping>

提取任何其他具有 fk 的内容

<hibernate-mapping>
 <class name="com.mycom.myapp.model.List" table="t_List">
  ...
  <set name="categoryRelation" fetch="join" table="t_relationToCategory" lazy="false"  inverse="true" >
   <key>
    <column name="rec_ListId"></column>
   </key>
   <one-to-many class="com.yell.news.model.CategoryRelation"/>
  </set>
 </class>
</hibernate-mapping>

知道可能是什么问题吗?

【问题讨论】:

  • 要使用 HSQLDB,属性必须改变 org.hsqldb.jdbcDriverjdbc :hsql:mem:newsorg.hibernate.dialect.HSQLDialect
  • 我都使用过(更改适当的选项,如驱动程序、url 和方言),但结果始终相同...

标签: hibernate hsqldb h2 hbm2ddl


【解决方案1】:

我找到了解决方案。似乎是休眠版本的问题。我使用的是 4.1.1.Final

我的一个同事告诉我要使用 3.6.0.Final,所以我将它添加到 maven(需要的库:javassist - 版本 3.12.1.GA ) 问题就解决了。

似乎是 Hibernate 中版本 4.1.1.Final 的问题。或者可能是我没有找到的配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多