картирование один-ко-многим с использованием gorm - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть arHistory класса домена следующим образом:

package ars
import ars.AccessRequest
import gra.Users
class ArHistory {
    Long id =2340
    Users updatedby
    Date updatedon
    String requeststatus  
    static hasMany=[accessrequests:AccessRequest]

    static constraints = {
         requeststatus(blank:false, nullable:false)
    }

Теперь после запуска приложения GORM создает таблицы ar_history и ar_history_access_request (таблица соединения для отношения один ко многим)

В приведенной выше таблице соединений есть только 2 внешних ключа, а в самой таблице нет идентификатора первичного ключа. Я хотел знать 3 вещи, 1) нужно ли иметь идентификатор первичного ключа для таблицы соединений 2) если да, как мне создать идентификатор (я могу создать его вручную через mysql) 3) в чем преимущество наличия hasMany () вместо определения переменной класса AccessRequest в ArHistory, это просто нормализованные данные?

С уважением Priyank

1 Ответ

1 голос
/ 22 декабря 2011

Вам не нужен первичный ключ в таблице соединений, поскольку вы не разрешаете дублирование с помощью hasMany. Прочитайте документацию по hasMany: «Grails автоматически внедрит свойство типа java.util.Set в класс домена на основе параметра hasMany». Таким образом, первичный ключ не нужен.

Что вы подразумеваете под третьим вопросом? hasMany позволяет добавлять множество объектов AccessRequest в коллекцию.

...