Я новичок в Grails. Могу ли я использовать «hasOne» или «hasMany», не используя «принадлежит» другому доменному классу?Grails Domain Класс: hasOne, hasMany without ownedTo
Заранее спасибо.
Я новичок в Grails. Могу ли я использовать «hasOne» или «hasMany», не используя «принадлежит» другому доменному классу?Grails Domain Класс: hasOne, hasMany without ownedTo
Заранее спасибо.
Да, вы можете. Смотрите примеры в 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
}
Да, можно, но ведут себя по-разному
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
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
}
Готово !!
спасибо. heikkim. Это помогает значительно очистить концепцию! Это возможно, и ссылка является подлинной! –
@ пользователь970451 добро пожаловать. – heikkim