自定义加入grails表

时间:2012-05-05 12:22:05

标签: grails many-to-many gorm jointable

我有以下域名

  1. 用户(在数据库中称为usermanagement)和
  2. 帐户(在另一个数据库xyz中)
  3. 它是一个旧系统,所以我无法真正改变系统的架构。我被分配了一个任务来实现某个用户只能访问某些帐户的系统。这是多对多关系的典型案例,但问题在于这两个域位于两个不同的数据库中。如果可能的话我用Google搜索,但我意识到这是不可能的。所以我现在正在考虑创建一个自定义连接表来存储有关允许哪个用户访问哪些帐户的信息。该表可以有两列'accountId'和'userId'。所以对于这个,我是否必须在grails中创建一个新的域,或者有没有切割方法这样做? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您创建了要创建它的DB的joinTable,以及如何处理主(帐户,用户)表中的更新并将连接表up2date?

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

你有两个Domain类,每个类都指向不同的dataSource(DataBase)。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:-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