在使用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是没有意义的..任何帮助都非常感谢。
感谢
标记
答案 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中的所有映射都对应于实际的映射。