MappingException .hibernate mapping не удается для классов в разных пакетах - PullRequest
3 голосов
/ 05 июля 2011

во время использования 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 .. Я получил эту ошибку

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

Я удалил атрибут пакета из элемента и поместил полностью классифицированные имена классов. До сих пор получаю то же исключение ..

<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 голосов
/ 25 марта 2013
org.hibernate.MappingException: Association references unmapped class: myapp.domain.CartItem

Это только означает, что он ищет CartItem в пакете myapp.domain, но ваш класс фактически находится в пакете myapp.cart.Таким образом, отображаемое вами отображение спящего режима верное, но я думаю, что в вашем классе Java могут быть некоторые проблемы.Не могли бы вы отобразить ваши классы Java, связанные с вашей проблемой?

Или вы не отображали другие связанные отображения спящего режима, которые могли бы вызвать это исключение.

Также убедитесь, что все сопоставления в hibernate.cfg.xml или applicationContext Spring соответствует фактическим сопоставлениям.

...