0

次のドメインがあります

  1. ユーザー (usermanagement というデータベース内) および
  2. アカウント (別のデータベース xyz 内)

古いシステムなので、システムのアーキテクチャを実際に変更することはできません。特定のユーザーが特定のアカウントにのみアクセスできるシステムを実装するタスクが割り当てられました。これは多対多の関係の典型的なケースですが、問題はこれら 2 つのドメインが 2 つの異なるデータベースにあるという事実にあります。それが可能かどうかグーグルで検索しましたが、不可能であることに気付きました。そのため、どのユーザーがどのアカウントへのアクセスを許可されているかに関する情報を保存するためのカスタム結合テーブルを作成することを考えています。テーブルには、「accountId」と「userId」の 2 つの列を含めることができます。このために、grailsで新しいドメインを作成する必要がありますか、それともこれを行うクリーバーの方法はありますか? 前もって感謝します。

4

3 に答える 3

1

これの解決策を探したところ、持続可能な解決策は見つかりませんでした。最終的に考えられる解決策を 2 つに絞り込みました。2. プロパティ clientId と userId を持つ AccountUser のようなドメイン クラスを作成します。

2 番目のオプションを選択し、いくつかの追加のメソッドを作成し、ユーザーとクライアントのインスタンスを返すサービスを作成しました。これで完了です。とにかく、みんなありがとう。

于 2012-05-07T16:27:34.997 に答える
1

joinTable を作成する DB に作成する場合、メイン (アカウント、ユーザー) テーブルの更新をどのように処理し、結合テーブルを up2date に設定しますか?

(この場合)テーブルを結合する必要はなく、アプリケーションレベルでビジネスロジックを処理する必要があると思います。

それぞれ異なる dataSource(DataBase) を指す 2 つの Domain クラスを持つことができます。

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

于 2012-05-05T17:12:35.887 に答える
-1

データベースが互いに「見える」場合 (同じサーバー上またはそれらの間にデータベース リンクがある場合)、マッピングで完全修飾テーブル名 (「schema.tablename」) を使用してドメイン クラスをマッピングできるはずです。閉鎖。

疑似コード:

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

于 2012-05-05T13:44:27.540 に答える