Столбец uuid ссылается на две таблицы в ORM - PullRequest
0 голосов
/ 21 апреля 2020

Во-первых, я новичок ie, поэтому извините заранее.

Вот примерная модель, на которой я работаю, в SQL:

      |-----------------|            |-----------------|
      |     Contract    |            |      Company    |
      |-----------------|            |-----------------|
      |       id        |            |    id_company   |
      |      alias      |            |       name      |
      |   ContractStatus|            --------------------
      |     isCompany   |            |-----------------|
      |    id_entity    |            |     Person      |
      -------------------            |-----------------|  
                                     |  id_person      |
                                     |      name       |
                                     -------------------

isCompany - Boolean: если T, то Contract.id_entity = Company.id_company

else: Contract.id_entity = Person.id_person

Таким образом, Contract.id_entity может ссылаться на 2 таблицы в соответствии со значением isCompany. Теперь я вынужден работать с XML ORM следующим образом:

<entity name="Contract">
    <table name="Contract_data">
    <attributes>
        <id name="id">
            <column name="id_contract"/>
        </id>
        <basic name="alias_contract">
            <column name="alias"/>
        </basic>
        <basic name="status">
            <column name="ContractStatus"/>
        </basic>
        <basic name="isCompany">
            <column name="isCompany"/>
        </basic>
        <one-to-one name="company" target-entity="..." fetch="LAZY">
            <join-column name="id_entity">
            <cascade>
                <cascade_all/>
            </cascade>
        <one-to-one/>
        <one-to-one name="person" target-entity="..." fetch="LAZY">
            <join-column name="id_entity">
            <cascade>
                <cascade_all/>
            </cascade>
        <one-to-one/>
    </attributes>   
</entity>   


<entity name="Company">
    <table name="Company">
    <attributes>
        <id name="id_company">
            <column name="id_contract"/>
        </id>
        <basic name="name">
            <column name="name"/>
        </basic>
    </attributes>   
</entity>   

<entity name="Person">
    <table name="Person">
    <attributes>
        <id name="id_person">
            <column name="id_person"/>
        </id>
        <basic name="name">
            <column name="name"/>
        </basic>
    </attributes>   
</entity>   

, а мои java сущности выглядят так:

    public class Contract {
          private String id;
          private String alias;
          private String ContractStatus;
          private String isCompany;
          private Company company;
          private Person person;
      }


      public class Company {
          private String id_company;
          private String name;
          ...
      }

        public class Person {
          private String id_person;
          private String name;
          ...
      }

У меня есть исключение Caused by: org.hibernate.MappingException: Repeated column in mapping for entity , Где проблема в моем ORM?

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