Grails: Many-to-Many sin hasMany/belongsTo-en lugar de utilizar native 3NF-Búsqueda de texto completo
normalization tagging (0)
Estoy implementando un mapeo many-to-many en griales usando 3NF, sin usar la propiedad hasMany o belongsTo.
Tomado de este artículo muestra y explica bastante sobre sus ventajas.
Artículo: http://burtbeckwith.com/blog/?p=169
Notas de la presentación: http://burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdf
Estoy tratando de hacer un sistema de etiquetas en las preguntas, algo así como (stackoverflow :))
Puedo guardar la Pregunta y las Etiquetas, luego guardar la asociación con ellos, pero ahora quiero poder buscar y enviar una Pregunta completa con Etiquetas,
Tengo 3 clases de dominio: pregunta, etiqueta y 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)
}
}
Clase QuestionTag
class QuestionTag implements Serializable{
Question question
Tag tag
static mapping = {
table ''question_tags''
version false
id composite: [''question'', ''tag'']
}
Estos producen 3 tablas, en 3 formas normalizadas
Guardar trabajos, una pregunta y una cantidad de etiquetas.
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 ¿Cómo puedo cargar una "Pregunta" junto con su conjunto de "Etiquetas"? si había 5 etiquetas asociadas con la pregunta.
Ahora que instalé el complemento "buscable", apliqué el "static searchable = true" a las tres clases. pero obtengo errores de compilación cuando agrego esa propiedad a la clase QuestionTag, pensando que tiene que ver con la falta de "hasMany",
No converter defined for type [com.app.Question]
Q.2 Si agrego "hasMany" generará otra tabla debajo del capó, sin embargo, he definido el mío. ¿O hará referencia a mi tabla QuestionTag que hice?
Q.3 Usar el 3NF de todos modos puedo buscar etiquetas y preguntas de texto completo, luego devolver las preguntas asociadas con las palabras clave de búsqueda que coinciden con etiquetas o texto.