Grails — использование составного класса ключей

#hibernate #grails #groovy #grails-orm

#переход в спящий режим #grails #groovy #grails-orm

Вопрос:

Недавно я изменил некоторые сопоставления в своем приложении, и теперь это выглядит так.

Сценарий — подписка «многие ко многим»

Класс составного ключа -> ScenarioSubscription

 class ScenarioSubscription {

int id
Scenario scenario
Subscription subscription}
  

У меня все работает нормально. Но поскольку у меня раньше не было такой настройки, я использовал такие вещи, как:

 scenario.subscriptions.clear()
  

И я не хочу менять весь этот код.
Есть ли какой-нибудь способ получить эту функциональность с помощью составного класса?

Я пытался делать как:

 def subscriptions(){
    def subs = new SortedSet();
    for(ScenarioSubscription s : scenarioSubscriptions){
        subs.add(s.subscription);
    }
    return subs;
}
  

в Scenario.groovy; Но это работает только при чтении, конечно, я не могу удалять элементы и т. Д…

Комментарии:

1. Для меня это скорее вопрос о взаимоотношениях M: M. Grails имеет встроенные средства для его поддержки, вы пробовали их? Почему вы объявляете id поле явно, поскольку либо Grails добавит его для вас, либо, если это таблица отношений M: M, она вообще не понадобится?

2. Моя точка зрения, если вы ее не объявите. grails создает это, совершенно бессмысленно. Вместо этого я использовал JoinTable для создания m: m, и это сработало довольно хорошо.