Прежде всего: я не новичок в Граале. Я использовал ассоциацию один ко многим много раз. Возможно, проблема возникает из-за того, что это не обычное использование.
код:
class Filter {
static hasMany = [normal:Result, longerDates:Result, locationReduce1:Result, locationReduce2:Result]
}
class Result {
int score
static belongsTo = [user:User, filter:Filter]
static constraints = {
user(nullable:false, blank:false)
score(nullable:false)
}
как видите. Я использую класс "result" 4 раза как ассоциацию один ко многим с одним и тем же классом "filter"
grails создает таблицу «result» с внешним ключом «filter_id» для ссылки на связанный фильтр. Но нет никакой разницы, если это "нормальная" / "longDates" .... ассоциация. В результате, когда я запрашиваю
def results = filter.normal
или
def results = filter.longerDates
я получаю те же результаты. хотя я сохранил результаты правильно
filter.addToNormal (новый результат (..))
и
filter.addToLongerDates (новый результат (..))
Следующее, что я попробовал, было удаление ассоциации принадлежащих к результату из фильтра. Хотя я хотел неявно удалить все результаты фильтра при его удалении ...
результат был "таблицей результатов", как я и хотел. 4 атрибута, называемых «нормальными», «long_dates», «location_Reduce_1» и «location_Reduce_2». когда я сохранял «нормальный» результат, атрибут в таблице содержал идентификатор фильтра, которому принадлежит результат. другие атрибуты (например, longDates "имели нулевое значение).
Все идет нормально. странно, что я смог сохранить только ОДИН результат на фильтр, хотя у меня был атрибут has_many в классе «filter»
кто-нибудь знает, что я делаю не так?