Grails:没有 hasMany/belongsTo 的多对多 - 而是使用本机 3NF - 搜索全文
我正在使用 3NF 在 grails 中实现多对多映射, 不使用 hasMany 或belongsTo 属性。
摘自这篇文章,它展示并解释了很多有关其优点的内容。
文章:http://burtbeckwith.com/blog/?p=169
演示文稿说明: http://burtbeckwith.com/blog/files/169/ gorm%20grails%20meetup%20presentation.pdf
我正在尝试在问题上创建一个标签系统,有点像这样(stackoverflow:))
我可以保存问题和标签,然后保存与它们的关联, 但现在我希望能够搜索并提供带有标签的完整问题,
我有 3 个域类 - Question、Tag 和 QuestionTag
class Question {
String title
String content
Date createdAt
String tags
static transients = ['tags']
}
Tag Class
class Tag {
String name
static constraints = {
name(blank: false, maxSize: 40)
name(unique: true)
}
}
QuestionTag Class
class QuestionTag implements Serializable{
Question question
Tag tag
static mapping = {
table 'question_tags'
version false
id composite: ['question', 'tag']
}
这些会生成 3 个表格,以 3 种标准化形式
保存工作、问题和数量标签。
def question = new Question()
question.properties = params
question.save()
def tags = question.tags
tags.split(' ')?.each { tagName ->
Tag tag = Tag.findByName(tagName) ?: new Tag(name: tagName).save()
QuestionTag questionTag = new QuestionTag(question: question, tag: tag)
QuestionTag.save(flush: true)
}
问题1 如何加载“问题”及其一组“标签”?如果有 5 个与该问题相关的标签。
现在我安装了“searchable”插件,我将“static searchable=true”应用于所有三个类。但是当我将该属性添加到 QuestionTag 类时出现编译错误, 思考与缺少“hasMany”有关,
No converter defined for type [com.app.Question]
Q.2如果我添加“hasMany”,它会在后台生成另一个表,但我已经定义了自己的表。或者它会引用我制作的 QuestionTag 表吗?
Q.3 使用 3NF 无论如何我都可以搜索标签和问题全文,然后返回与匹配标签或文本的搜索关键字关联的问题。
I am implementing a many-to-many mapping in grails using 3NF,
Not using the hasMany or belongsTo property.
Taken from this article it shows and explains quite a lot about its advantages.
Article: http://burtbeckwith.com/blog/?p=169
Presentation notes: http://burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdf
I'm trying to make a Tag system onto questions, kind of like this(stackoverflow :))
I can save the Question and the Tags, then save the association with them,
but now I want to be able to search and serve up a full Question with Tags,
I have 3 domain classes - Question, Tag and QuestionTag
class Question {
String title
String content
Date createdAt
String tags
static transients = ['tags']
}
Tag Class
class Tag {
String name
static constraints = {
name(blank: false, maxSize: 40)
name(unique: true)
}
}
QuestionTag Class
class QuestionTag implements Serializable{
Question question
Tag tag
static mapping = {
table 'question_tags'
version false
id composite: ['question', 'tag']
}
These produce 3 tables, in 3 normalized form
Saving works, a question and number of tags.
def question = new Question()
question.properties = params
question.save()
def tags = question.tags
tags.split(' ')?.each { tagName ->
Tag tag = Tag.findByName(tagName) ?: new Tag(name: tagName).save()
QuestionTag questionTag = new QuestionTag(question: question, tag: tag)
QuestionTag.save(flush: true)
}
Q.1 How can I load a "Question" along with its set of "Tags"? if there were 5 tags associated with the Question.
Now I installed the "searchable" plugin, I applied the "static searchable=true" to all three classes. but I get compile errors when I add that property to the QuestionTag class,
thinking is has to do with the lack of "hasMany",
No converter defined for type [com.app.Question]
Q.2 If I add "hasMany" will it generate another table under-the-hood, yet I have defined my own. Or will it reference my QuestionTag table that I made?
Q.3 Using the 3NF is there anyway I can search for Tags AND Question full text, then return the Questions associated with the search keywords that match Tags or text.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论