Domain类中如何将属性设置为大文本字段（如CLOB）?
李小翔
2013-10-17 09:42

内容列表
问题描述 	 # 
解决方案 	 # 
适用于 	 # 

问题描述
    当需要记录大量文本的情况下，如新闻、公告、日志记录等，数据库中往往使用对应的大文本字段进行数据存储，如Oracle的CLOB、MySQL的longtext、SQLServer的nvarchar(MAX)。

解决方案
    在BroToolkit中，自定义了几个常用的数据库方言（bropen.toolkit.orm.XxxxDialect），以及一个方言解析器（BroDialectResolver），在应用启动过程中，针对数据库类型自动加载对应的方言类。当然，如果您在应用的DataSource中指定了自定义的数据库方言，建议继承自上述方言类，以免导致不可预见的问题。
    在这些方言类中，针对长文本类型的Domain属性，自动映射到对应的数据库字段类型上。编写Domain类时，只需要在constraints里设置好属性的长度、mapping里设置属性类型为text即可。
    示例代码如下：
class Article { 
   
    String body
   
   static constraints = { 
        body(nullable:true, maxSize:10000000)
   } 
   
   static mapping = { 
        body type:”text”
   } 
} 

适用于
    BroToolkit 3.0+