【问题标题】:GORM/Grails - add extra column to a joinTable expressionGORM/Grails - 向 joinTable 表达式添加额外的列
【发布时间】:2011-10-24 22:29:47
【问题描述】:

我有一个类似的域类设置

class NewsStory {
  String headline
  static hasMany = [channels:Channel]
  static mapping = {
      table 'NewsStory'
      addresses joinTable:[name:'Article_Channel', key:'ArticleId', column:'ChannelId']
  }
}

在 Article_Channel 表中,我需要填充一个名为 ArticleType 的额外列。它的值将始终相同,例如此域类的“新闻”,但对于其他类则不同,例如'博客' 频道就像“安全”等

有办法吗? 谢谢

【问题讨论】:

    标签: grails join grails-orm lookup-tables


    【解决方案1】:

    一种选择是创建您自己的多对多映射类并在其中添加字段。

    http://grails.org/Many-to-Many+Mapping+without+Hibernate+XML

    所以,例如:

    class ArticleChannel {
        NewsStory newsStory
        Channel channel
        String articleType
    }
    

    然后,您的 NewsStoryChannel 类将 hasMany ArticleChannel 类。

    【讨论】:

    • 谢谢。您如何解决在创建项目之前需要文章创建 articlechannel 项目的鸡蛋情况,即该项目尚不适用于 articlechannel?
    • 我认为我可以在 NewsStory 上指定 id 和 articleType 的复合键,但它不会将其传播到查找表
    • 要在创建文章之前保留 ArticleChannel 链接,您可以将文章属性设置为 nullable:true。您只需编写代码以记住 ArticleChannel 对象 id 以便稍后使用文章对象填充它。至于跨 1 米关系的复合 id,我认为这是不可能的,如果是,我不确定如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2021-10-11
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多