Tenho as seguintes classes, User, Projeto , Publicacoes e Artigo,
e quero implementar o relacionamento many-to-many entre User e Publicacoes.
Ao rodar a aplicacao, a tabela user_publication eh criada com com 3 atributos (id, id_usuario e id_publicacao)
Porem na hora em que eu vou salvar uma Publicacao extoura uma excecao de sql (dizendo que o atributo id nao possui valor default)
class User {
String login
String senha
static hasMany = [publicacoes : Publicacoes]
}
public class Projeto{
String name
static hasMany = [publicacoes : Publicacoes ]
}
public class Publicacoes{
String nome
Projeto projeto
static belongsTo = [Projeto , User]
static hasMany = [users : User]
}
public class Artigo extends Publicacoes{
String cidade
}
// classe extra de uniao entre o relacionamento
public class Uniao{
Integer usersId
Integer publicacoesId
static mapping = {
table 'user_publicacoes’
id column : ‘id’ // erro na insercao
usersId column:'usuarios_id’
publicacoesId column:‘publicacoes_id’
}
}
// e o seguinte metodo no CONTROLADOR DO ARTIGO
def save = {
println “–> save artigo”
println "parametros: "
println params
def artigo = new Artigo(params)
println “–Artigo”
println artigo.nome
def proj = artigo.projeto
println proj.name
if(!artigo.hasErrors() && artigo.save()) {
println “–> save artigo if”
//List lista = params.users
def lista = params.artigo.users
for(i in lista)
{
println "–> save artigo if for"
def uniao = new Uniao()
uniao.usersId = i
uniao.publicacoesId = artigo.id
println i
uniao.save() /// NAO SALVA !!!11
println “–> save artigo if for uniao save”
}
flash.message = "Artigo ${artigo.id} created"
redirect(action:show,id:artigo.id)
}
else {
render(view:‘create’,model:[artigo:artigo])
}*/
}
}
// com o seguinte view no artigo
<g:select multiple="multiple"
optionKey="id"
optionValue=“login"
name=“artigo.users"
from=”${User.list()}”
/>