Постоянство ВСП многие-ко-многим - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть отношение многие ко многим между сотрудником и должностью.Может кто-нибудь показать мне, как реализовать добавление должностей сотрудникам?Контроллер и GSP для.Я хочу реализовать это при создании и обновлении GSP emloyee.На сотруднике create.gsp я хочу иметь текстовое поле для ввода имени сотрудника и комбинированный список с существующими позициями.Также я хочу иметь кнопку Add Position, которая будет отображать еще один комбинированный список для добавления дополнительных позиций.Для меня, как абсолютного новичка, это не так очевидно, и примеров по этому поводу немного.Было бы здорово иметь конкретный пример.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2011

Честно говоря, stackoverflow предназначен для вопросов и ответов, а не "сделай это для меня".

Ваш вопрос о том, как отобразить многие-ко-многим, действителен, и один очень распространенный способ - просто объединитьтаблица, содержащая оба отношения.

Примером, который вы можете перепроектировать для соответствия вашим классам, является класс UserRole из spring-security-core.

class UserRole implements Serializable {

User user
Role role


static UserRole get(long userId, long roleId) {
    find 'from UserRole where user.id=:userId and role.id=:roleId',
        [userId: userId, roleId: roleId]
}

static UserRole create(User user, Role role, boolean flush = false) {
    new UserRole(user: user, role: role).save(flush: flush, insert: true)
}

static boolean remove(User user, Role role, boolean flush = false) {
    UserRole instance = UserRole.findByUserAndRole(user, role)
    if (!instance) {
        return false
    }

    instance.delete(flush: flush)
    true
}

static void removeAll(User user) {
    executeUpdate 'DELETE FROM UserRole WHERE user=:user', [user: user]
}

static void removeAll(Role role) {
    executeUpdate 'DELETE FROM UserRole WHERE role=:role', [role: role]
}

static mapping = {
    id composite: ['role', 'user']
    version false
}
}

Удалены некоторые вспомогательные элементы, такие как хеш-коды и клоныи т. д.

Основная идея заключается в том, чтобы иметь таблицу соединений, содержащую идентификатор обоих ваших классов.

0 голосов
/ 25 ноября 2011

Эти записи в блоге формы "один-ко-многим-в-гралях" и формы-грал-один-ко-многим-* тесно связаны с вашей проблемой.

Они оба подробно описывают разные примеры и довольно просты для понимания.

...