如何解析,持久化和检索带有以空格分隔的标签的字符串?

时间:2008-10-29 03:01:18

标签: grails groovy tags tokenize

我的数据库由3个表组成(一个用于存储所有项目,一个用于标记,一个用于两者之间的关系):

表:发布 列:PostID,名称,描述

表:标签 列:TagID,名称

表:PostTag 列:PostID,TagID

将空格分隔的字符串(例如“smart funny wonderful”)保存到上面显示的3个数据库表中的最佳方法是什么?

最终我还需要检索标签并再次将其显示为字符串。谢谢!

2 个答案:

答案 0 :(得分:4)

大概是这样的:

class Post {
    static hasMany [tags:Tag]
}

class Tag {
    static belongsTo = Post
    static hasMany [posts:Post]
}

class someService {

    def createPostWithTags(name, desc, tags) {      
        def post = new Post(name: name, desc: desc).save()
        tags.split(' ').each { tagName ->
            def tag = Tag.findByName(tag) ?: new Tag(name: tagName)
            post.addToTags(tag).save()
        }       
    }

}

答案 1 :(得分:1)

如果您有一个标签表,那么每个标签都不会有一行吗?

tag.id = 1; tag.name = 'smart'
tag.id = 2; tag.name = 'funny'
tag.id = 3; tag.name = 'wonderful'

在Groovy / Grails中,您可以将它们作为列表进行检索,可能会将它们连接到一个以空格分隔的列表中进行显示。

除非我真的误解了这个问题,否则Groovy / Grails / GORM会使用默认的脚手架很少或没有代码来处理这个问题,不需要真正的编码。