Описание проблемы < /h1>
Со следующей настройкой < /p>
@Entity
public class ParentContainer {
@Id
@GeneratedValue
public Long id;
}
< /code>
@Entity
public class Container1 extends ParentContainer{
@OneToMany
public Set parts;
}
< /code>
@Entity
public class Container2 extends ParentContainer {
@OneToMany
public Set parts;
}
< /code>
@Entity
public class Part {
@Id
@GeneratedValue
public Long id;
}
< /code>
hibernate создаст ассоциативную таблицу под названием parentcontainer_part, в которой хранится контейнер1_id и container2_id с не с ограничением не нулевого.create table parentcontainer_part
(
container1_id bigint not null
constraint fkha3bx76rbpaly2k96p4ay41pu
references parentcontainer,
container2_id bigint not null
constraint fkridaro57cwd6262vsbttj8069
references parentcontainer,
parts_id bigint not null
unique
constraint fkmh13giccrumjrrharog6p2rdh
references part,
primary key (container1_id, parts_id)
);
< /code>
Это означает, что ни контейнер, ни контейнер не могут быть инициализированы, потому что не всегда будет мешать не нулевое ограничение другого типа контейнера. Очевидно, что часть может быть только в наборе контейнера1, а не в наборе в контейнере2. < /P>
Потенциальные решения < /h1>
, сделав Parentcontainer a @mappedsuperclass. Container2.
Очевидное решение в этом примере будет заключаться в том, чтобы перенести набор частей в ParentContainer, но может быть 10 различных типов контейнеров, и только два требуют набора частей. столы. Но теперь тонна соединений необходима при запросе тех данных, которые нежелательны. Но если Hibernate не создает отдельные ассоциативные таблицы для каждого объекта, должен быть способ настроить либо родитель, либо отношения для этого.
Подробнее здесь: https://stackoverflow.com/questions/795 ... ies-with-o
Quarkus hibernate orm создает ошибочную ассоциативную таблицу, когда две сущности с отношениями @onetomany расширяют одн ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение