0

我有以下域

  1. 用户(在称为用户管理的数据库中)和
  2. 帐户(在另一个数据库 xyz 中)

它是一个旧系统,所以我不能真正改变系统的架构。我被分配了一个任务来实现一个特定用户只能访问特定帐户的系统。这是多对多关系的经典案例,但问题在于这两个域位于两个不同的数据库中。如果可能的话,我用谷歌搜索,但我意识到这是不可能的。所以我现在正在考虑创建一个自定义连接表来存储允许哪些用户访问哪些帐户的信息。该表可以有两列“accountId”和“userId”。因此,为此,我是否必须在 grails 中创建一个新域,或者有什么更简洁的方法吗?提前致谢。

4

3 回答 3

1

如果您创建 joinTable 您将在哪个数据库中创建它,以及您将如何处理主(帐户,用户)表中的更新并更新您的连接表 up2date ?

我认为(对于这种情况)您不需要连接表,您需要在应用程序级别处理业务逻辑。

你可以有 2 个域类,每个类指向不同的数据源(数据库)。

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

于 2012-05-05T17:12:35.887 回答
1

当我寻找解决方案时,我没有找到任何可持续的解决方案。我最终将可能的解决方案缩小到两个: 1. (仅)使用 sql 创建一个域表,某种补丁并使用 grails 中的硬编码查询来写入和访问表中的数据。2. 创建一个域类,如 AccountUser 具有属性 clientId 和 userId

我选择了第二个选项,我写了一些额外的方法并创建了一个服务来返回用户和客户端实例,我就完成了!无论如何,谢谢各位。

于 2012-05-07T16:27:34.997 回答
-1

如果数据库对彼此“可见”(在同一台服务器上或它们之间存在 db 链接),您应该能够使用映射中的完全限定表名('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 回答