Hibernate - hbml. xml - Однонаправленный набор - один ко многим - PullRequest
0 голосов
/ 09 апреля 2020

Привет всем и спасибо за чтение,

У меня есть следующая проблема:

org.hibernate.boot.MappingException: Association [com .... core.complex. domain.Complex.outlayTypes] ссылается на неотображенную сущность [com .... core.complex.domain.Complex.outlayTypes

Я пытался исправить это со вчерашнего дня, и я не понимаю, что это такое проблема. Кроме того, я не уверен, почему на официальной странице спящего режима нет xml документации (https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#collections -set ).

Из-за того, как я проектирую систему, я хочу использовать xml конфигурации.

Итак, у меня есть 2 сущности:

Complex (1 --- N) OutlayType

public class Complex extends AggregateRoot {

    private ComplexId id;
    ...
    private Set<OutlayType> outlayTypes;

    constructors

    getters and setters

    public Set<OutlayType> getOutlayTypes() { return outlayTypes; }

    public void setOutlayTypes(Set<OutlayType> outlayTypes) { this.outlayTypes = outlayTypes; }

}



public class OutlayType {

    OutlayTypeId id;
    ...

    constructors

    getters and setters

{

Так что, как и в однонаправленном отношении, я не хочу иметь поле Complex в типе OutlayType.

В БД у меня есть следующее:

CREATE TABLE `complex` (
  `id` varchar(36) NOT NULL,
   ...
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `outlay_type` (
  `id` varchar(36) NOT NULL,
  ...
  `complex_id` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

И это мои hbm. xml конфигурации в файле Complex.hbm. xml. .

<hibernate-mapping>
    <class name="com....core.complex.domain.Complex" table="complex">
        <composite-id name="id" class="com....core.complex.domain.valueobject.ComplexId" access="field">
            <key-property column="id" name="value" length="36" access="field" />
        </composite-id>


        <set name="outlayTypes" cascade="all">
            <key>
                <column name="complex_id" not-null="true" />
            </key>
            <one-to-many class="com....core.complex.domain.OutlayType" />
        </set>
    </class>
</hibernate-mapping>

Опять-таки, как это однонаправленное отношение, у меня нет каких-либо сопоставлений на OutlayType.hbm. xml.

Я просмотрел много уроков, например: https://www.tutorialspoint.com/hibernate/hibernate_set_mapping.htm

Но я не понимаю, почему это не работает и выдает:

org.hibernate.boot.MappingException: Association [com ... .core.complex.domain.Complex.outlayTypes] ссылается на неотображенную сущность [com .... core.complex.domain.Complex.outlayTypes

Есть идеи? Спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Моя проблема заключалась в том, что я импортировал часть ядра как библиотеку в другое приложение. И файл Application.yml был перезагружен без OutlayType.hbm. xml.

    mapping-resources:
    - infraestructure/hibernate/Complex.hbm.xml
    - infraestructure/hibernate/OutlayType.hbm.xml

Таким образом, добавление отсутствующего файла устранило проблему. Спасибо за чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...