Grails / GORM: Как правильно / лучше всего сопоставить эти два домена? - PullRequest
0 голосов
/ 09 марта 2011

У меня есть класс домена User и список List.

У каждого списка должен быть автор (пользователь), и у каждого пользователя должен быть «первичный список». Только некоторые списки будут иметь статус «primaryList».

Так .. что-то вроде

 User:
    List primaryList

 List:
    User author

    static belongsTo = User

Конечно, это не работает так, как задумано, потому что эти два отношения ошибочно принимаются за одно. Я также должен добавить hasMany для пользователя и другие принадлежности в список ..., но я не хочу усложнять пример, потому что хочу получить правильный ответ от вас.

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Возможно, вам придется использовать mappedBy , чтобы объяснить, как располагаются поля в Пользователь и Список. Вот пара доменов, которые я написал, которые позволяют пользователю создавать множество списков, но только один из них должен быть «основным». Существует несколько дополнительных ограничений, допускающих использование значений Nullable, поэтому вы можете использовать пользовательский интерфейс с поддержкой scaffolded, не вдаваясь в сценарий "курица с яйцом".

class User {
    String name
    FooList primaryList

    static hasMany = [authoredLists: FooList]

    static mappedBy = [primaryList: 'primaryOwner', authoredLists: 'author']

    static constraints = {
        primaryList nullable: true, unique: true
        authoredLists nullable: true
    }

    String toString() { name }
}

Я назвал этот класс "FooList", чтобы избежать путаницы со стандартным классом List:

class FooList {
    static belongsTo = [author: User, primaryOwner: User]

    static constraints = {
        primaryOwner nullable: true, display: false
    }
}
2 голосов
/ 09 марта 2011

Попробуйте использовать карту, принадлежащую подходу:

static belongsTo = [user:User]

Таким образом, Grails должен видеть 2 свойства как отдельные.

...