2014-05-28 7 views

ответ

10

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

hasMany (без belongsTo) пример из дока:

отношения один-ко-многим, когда один класс, например, Автор, имеет много экземпляров других класс, пример книги. С Grails вы определяете такой отношения с настройкой hasMany:

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

class Book { 
    String title 
} 

В этом случае мы имеем однонаправленный один-ко-многим. Граилы будут, по умолчанию , сопоставьте это отношение с таблицей соединений.

hasOne (без belongsTo) Пример из дока:

Пример С

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 
} 
+0

спасибо. heikkim. Это помогает значительно очистить концепцию! Это возможно, и ссылка является подлинной! –

+0

@ пользователь970451 добро пожаловать. – heikkim

7

Да, можно, но ведут себя по-разному

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] 
    } 

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

Много-к-одному/один-к-одному: сохраняет и удаляет каскад от владельца к зависимому (класс с именем принадлежит).

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

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

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

2

да очень просто, как класс Defintion, но только указать 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 


} 

Готово !!