我想使用Grails和GORM和Hibernate将List字段持久化到单个VARCHAR列中。我已经编写了一个Hibernate自定义类型,但不知道如何让GORM/Hibernate将list字段视为persistent:
class User {
List<String> listOfStrings
static mapping = {
listOfStrings(type: StringListType, length: 512)
}
}忽略'listOfStrings‘映射。有什么想法吗?现在,我已经解决了这个问题,使用了一个额外的字符串字段和一个set/get来编码和解码列表。
发布于 2012-02-09 04:41:26
我以前没有编写过自定义类型,但我有一个想法可以让listOfStrings成为一个瞬态变量,并有一个事件处理程序来封送和解组字符串列表。例如,onLoad可以执行listOfStrings = internalVarName.split(),而onUpdate可以执行internalVarName = listOfStrings.join(' ')。
另一个想法是将字符串列表包装到您自己的类型中,因为GORM可能会对包含特定类型代码的关联进行特殊处理。我不知道这是事实,只是猜测。
发布于 2020-10-18 11:56:40
我认为这里的一个好方法是依赖一些现有的第三方库,这些库已经为自定义数据类型实现了gorm所需的Scanner/Valuer接口,因此您可以这样做:
import (
"github.com/lib/pq"
)
type Post struct {
Tags pq.StringArray `gorm:"type:text[]"`
}这段代码类似于gorm文档中用于自定义数据类型的代码,可以在https://gorm.io/docs/data_types.html中找到,它允许您利用现有的高度支持go的postgres驱动程序。
https://stackoverflow.com/questions/9199690
复制相似问题