Класс домена Grails: hasOne, hasMany без принадлежности к

Я новичок в Grails. Могу ли я использовать "hasOne" или "hasMany", не используя "ownTo" для другого класса домена?

Заранее спасибо.

3 ответа

Решение

Да, ты можешь. Смотрите примеры в Grails doc: http://grails.org/doc/2.3.8/guide/GORM.html

Пример hasMany (без принадлежности) из документа:

Отношение "один ко многим" - это когда один класс, например Author, имеет много экземпляров другого класса, например Book. С Grails вы определяете такие отношения с помощью настройки hasMany:

class Author {
    static hasMany = [books: Book]
    String name
}

class Book {
    String title
}

В этом случае мы имеем однонаправленное отношение один ко многим. По умолчанию Grails отобразит этот тип отношений с помощью таблицы соединений.

Пример hasOne (без принадлежности) из документа:

Пример С

class Face {
    static hasOne = [nose:Nose]
}
class Nose {
    Face face
}

Обратите внимание, что использование этого свойства помещает внешний ключ в обратной таблице в предыдущий пример, поэтому в этом случае столбец внешнего ключа хранится в основной таблице внутри столбца с именем face_id. Кроме того, hasOne работает только с двунаправленными отношениями.

Наконец, это хорошая идея, чтобы добавить уникальное ограничение на одну сторону отношения один-к-одному:

class Face {
    static hasOne = [nose:Nose]
    static constraints = {
        nose unique: true
    }
}

class Nose {
    Face face
}

Да можно, но вести себя иначе

 class Author {
        static hasMany = [books: Book]
        String name
    }

    class Book {
        String title

    }

В этом случае при удалении автора книги еще существуют и являются независимыми.

 class Author {
        static hasMany = [books: Book]
        String name
    }

 class Book {
        String title
      static belongsTo = [author: Author]
    }

В этом другом случае, если вы удалите автора, он удалит все книги этого автора в каскаде.

Many-to-one / one-to-one: сохраняет и удаляет каскад от владельца к зависимому объекту (класс с ownTo).

Один-ко-многим: каскады сохраняются всегда с одной стороны на сторону многих, но если сторона с множеством имеет принадлежность, то также удаляются каскады в этом направлении.

Многие ко многим: только сохраняет каскад от "владельца" к "зависимому", но не удаляет.

http://grails.org/doc/2.3.x/ref/Domain%20Classes/belongsTo.html

да, очень просто, как определение класса, но только указать hasMany, но не нужно hasOne

class Student {

String name

User userProfile

static hasMany =[files:File]
}


class User {

String uname

Student student

} 


class File {

String path 

Student student  // specify the belongs to like this no belong to 


}

Готово!!

Другие вопросы по тегам