将 hasMany = [field:String] 映射到数据库字段 TEXT
Posted
技术标签:
【中文标题】将 hasMany = [field:String] 映射到数据库字段 TEXT【英文标题】:Mapping hasMany = [field:String] to a database field TEXT 【发布时间】:2010-12-28 16:01:39 【问题描述】:是否可以将 hasMany 关联到原始类型(在我的情况下为字符串)的数据库列类型设置为特定值?我知道如何设置字段(请参阅this question),但这是不同的。
List textRecords
static hasMany = [
textRecords:String,
]
我想确保我的 textRecords 映射到 TEXT 或 LONGTEXT 数据库类型。
我可以创建一个单独的域类,它只包含一个字符串字段并映射该字段,但这似乎是一个 kluge。
【问题讨论】:
【参考方案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
。以上是关于将 hasMany = [field:String] 映射到数据库字段 TEXT的主要内容,如果未能解决你的问题,请参考以下文章
CakePHP - 如何一次通过记录保存单个 hasMany,每个 hasMany 有多个 belongsTo 记录?