Как объединить две сущности через две вторичные таблицы в спящем jpa? - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужна твоя помощь.

У меня есть объекты для table_action и table_list. Я хочу иметь в сущности table_action список элементов table_list. Я не могу изменить модель базы данных, и мне нужно использовать спящий режим. db_model Вы можете увидеть соединения на скриншоте ниже.

То, что у меня сейчас не работает:

     TableAction.java :

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "table_action2list", joinColumns = {
        @JoinColumn(name = "OBJID") }, inverseJoinColumns = {
                @JoinColumn(name = "list_objid", referencedColumnName = "objid", nullable = false, insertable = false, updatable = false),
                @JoinColumn(name = "list_type", referencedColumnName = "list_type", nullable = false, insertable = false, updatable = false),
                @JoinColumn(name = "list_kind", referencedColumnName = "list_kind", nullable = false, insertable = false, updatable = false) })
private Set<TableList> tableList = new HashSet<TableList>();

Я не знаю, как присоединиться к table_action2plan.

Это sql, который работает.

    select rl.* from table_list rljoin table_action2list arc on arc.LIST_OBJID = rl.OBJID and arc.LIST_KIND = rl.LIST_KIND and arc.LIST_TYPE = rl.LIST_TYPE join table_action2plan ac on ac.OBJID = arc.action2plan_objid join table_action ta on ta.OBJID = ac.ACTION_OBJID ;

1 Ответ

0 голосов
/ 13 декабря 2018

После некоторых исследований выяснилось, что я не могу иметь в сущности table_action список table_list, поскольку в TableAction такого отношения нет.Проблема была решена путем изменения структуры базы данных, чтобы между сущностями была только одна соединительная таблица.Затем он работал как обычно с аннотацией JoinTable.

...