【问题标题】:Mapping hasMany = [field:String] to a database field TEXT将 hasMany = [field:String] 映射到数据库字段 TEXT
【发布时间】:2023-03-09 03:41:01
【问题描述】:

是否可以将 hasMany 关联到原始类型(在我的情况下为字符串)的数据库列类型设置为特定值?我知道如何设置字段(请参阅this question),但这是不同的。

  List textRecords
  static hasMany = [
          textRecords:String,
  ]

我想确保我的 textRecords 映射到 TEXT 或 LONGTEXT 数据库类型。

我可以创建一个单独的域类,它只包含一个字符串字段并映射该字段,但这似乎是一个 kluge。

【问题讨论】:

    标签: grails


    【解决方案1】:

    Grails 用户指南在5.2.1.4 Basic Collection Types 部分列出了一个与您想要完成的非常相似的示例。

    请记住,每次您想将 textRecord 添加到该对象时,它都必须加载整个 textRecord 列表才能再次保存它。出于性能原因,这可能不是您想要的行为。

    你最终会得到一个像这样的映射块:

    static mapping = {
           hasMany joinTable:[name:'bunch_o_text_records', key:'domain_id', column:'text_record', type:"text"]       
    }
    

    【讨论】:

    • 感谢您为我指明了正确的方向,即使是 5 年后!但是hasMany joinTable 应该是textRecords joinTable。另外,我必须使用sqlType: "text" 而不是type: "text" 来让它实际创建一个文本列类型,至少在Grails 2.5.0 和MySQL 驱动程序中是这样。您还可以在其他数据库引擎中使用longtext 等,或clob
    猜你喜欢
    • 2011-09-29
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2022-01-12
    • 2014-06-10
    相关资源
    最近更新 更多