对于不同包中的类,MappingException .hibernate映射失败

时间:2011-07-05 08:53:54

标签: java hibernate mapping package

在使用hibernate时,我遇到了这个问题,在两个不同的包中映射类。

我有一个myapp.domain.ItemforSale类,它将映射到myapp.cart.CartItem

我创建了CartItem.hbm.xml,如下所示

<hibernate-mapping package="myapp.cart">
<class name="CartItem" table="CARTITEM">
    <id name="cartItem_id" column="CARTITEM_ID" type="long">
        <generator class="native"/>
    </id>
    <property name="quantity" type="int" column="QUANTITY" />

    <many-to-one name="itemforsale" class="myapp.domain.ItemforSale" column="ITEM_FORSALE_ID" lazy="false" />
</class> 
...

我有一个从CartItem到ItemForSale实体的单向映射。在保存ItemForSale实例时运行测试到db..I出现此错误

506 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
506 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
571 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : myapp/domain/ItemForSale.hbm.xml
636 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: bookshop.domain.ItemForSale ->ITEMFORSALE
...
746 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : myapp/cart/CartItem.hbm.xml
751 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: myapp.cart.CartItem -> CARTITEM
...
org.hibernate.MappingException: Association references unmapped class: myapp.domain.CartItem

我从element中删除了package属性并放入了完全分类的类名。但是我得到了相同的异常..

<hibernate-mapping>
<class name="myapp.cart.CartItem" table="CARTITEM">
    <id name="cartItem_id" column="CARTITEM_ID" type="long">
        <generator class="native"/>
    </id>
    <property name="quantity" type="int" column="QUANTITY" />

    <many-to-one name="itemforsale" class="myapp.domain.ItemForSale" column="ITEM_FORSALE_ID" lazy="false" />
</class>

作为最后的尝试,我将CartItem移动到myapp.domain包,一切正常!

知道为什么会这样吗?在我的应用程序中将myapp.cart.CartItem移动到myapp.domain是没有意义的..任何帮助都非常感谢。

感谢

标记

1 个答案:

答案 0 :(得分:0)

org.hibernate.MappingException: Association references unmapped class: myapp.domain.CartItem

这仅表示它在myapp.domain包中搜索CartItem,但您的类实际上是在myapp.cart包中。所以基本上你显示的hibernate映射是正确的,但我认为你的java类可能存在一些问题。你能否展示一下与你的问题相关的java课程?

或者您没有显示可能导致此异常的其他相关hibernate映射。

还要确保hibernate.cfg.xml或Spring的applicationContext中的所有映射都对应于实际的映射。