Во-первых, я новичок 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?