2012-05-05 4 views
0

У меня есть следующие доменыПользовательские Присоединяйтесь стол в Граалей

  1. пользователя (в базе данных под названием usermanagement) и
  2. счета (в другой АБВ базы данных)

Его старая система, так что я не могу действительно изменить архитектуру системы. Мне была назначена задача реализовать систему, чтобы определенные пользователи могли получать доступ только к определенным учетным записям. Это классический случай отношений «многие ко многим», но проблема заключается в том, что эти два домена находятся в двух разных базах данных. Я искал googled, если это было возможно, но я понял, что это невозможно. Поэтому теперь я собираюсь создать таблицу пользовательских соединений, чтобы хранить информацию, по которой пользователю разрешен доступ к каким учетным записям. Таблица может иметь два столбца «accountId» и «userId». Поэтому для этого мне нужно создать новый домен в grails или есть ли какой-либо способ для этого? Спасибо заранее.

ответ

-1

Если базы данных «видны» друг другу (на одном и том же сервере или между ними есть связь db), вы должны иметь возможность сопоставлять классы домена с использованием полных имен таблиц («schema.tablename») в замыкании отображения.

psuedocode:

class User { 

static mapping = { 
    table "usermanagement.user" 
} 

static hasMany = [Account:accounts] 

} 

class Account { 

static mapping = { 
    table "xyz.account" 
} 

} 

http://grails.org/doc/latest/guide/GORM.html#tableAndColumnNames

+0

Я уже сделал это, теперь мне нужно создать таблицу соединений между этими двумя. –

1

Если вы создаете joinTable, в котором DB вы собираетесь создать и как вы собираетесь обновления ручки в основной (данные, пользователь) таблицы и CEEP ваш присоединиться таблица up2date?

Я думаю (для этого случая) вам не нужна таблица соединений, вам нужно обрабатывать бизнес-логику на уровне приложений.

У вас есть два класса домена, каждый из которых указывает на разные источники данных (DataBase).

http://grails.org/doc/latest/guide/conf.html#multipleDatasources

+0

да, у меня есть два класса домена, указывающие на два разных источника. Таблица пользователя находится в usermanagement, а Account - в базе данных xyz. Использование usermanagement является общей базой данных, другие приложения также используют это, поэтому я не могу этого трогать. xyz - моя база данных, поэтому я могу поместить таблицу соединений в эту базу данных. Мне нужно регулировать доступ для пользователей –

1

Как я искал решение этого, я не нашел каких-либо устойчивых решений. В конечном итоге я сузил вероятные решения на два: 1. Создайте таблицу домена (только) с помощью SQL-кода, своего рода патч и используйте жестко запрограммированные запросы в grails для записи и доступа к данным в таблицу и из нее. 2. Создайте класс домена, например AccountUser, имеющий свойства clientId и userId

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

Смежные вопросы