1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Inserção relacionamento OneToMany

Boa noite pessoal!

Estou com dificuldade em salvar dados de relacionamento de um para muitos. Estou usando Spring MVC

Classe Grupo

package br.christus.sigeu.seguranca.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import br.christus.sigeu.seguranca.domain.ConteudoSite;

public class Grupo implements Serializable {

    /**
     * Serializable
     */
    private static final long serialVersionUID = 1L;

    // cdGrupo
    private Integer codigo;

    // nmGrupo
    private String nome;

    // flSuperGrupo
    private String superGrupo;


    private Set<ConteudoSite> conteudosSite = new HashSet<ConteudoSite>();
    private Set<Metodo> metodos = new HashSet<Metodo>();
    private Set<Usuario> usuarios = new HashSet<Usuario>();

    public Grupo() {}

    public Grupo(Integer codigo) {
        super();
        this.codigo = codigo;
    }

    public Grupo(Integer codigo, String nome, String acessoGrupo,
            String superGrupo) {
        super();
        this.codigo = codigo;
        this.nome = nome;
        this.superGrupo = superGrupo;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSuperGrupo() {
        return superGrupo;
    }

    public void setSuperGrupo(String superGrupo) {
        this.superGrupo = superGrupo;
    }

    public Set<ConteudoSite> getConteudosSite() {
        return conteudosSite;
    }

    public void setConteudosSite(Set<ConteudoSite> conteudosSite) {
        this.conteudosSite = conteudosSite;
    }

    public Set<Metodo> getMetodos() {
        return metodos;
    }

    public void setMetodos(Set<Metodo> metodos) {
        this.metodos = metodos;
    }

    public Set<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(Set<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(codigo).append(nome).toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Grupo)) {
            return false;
        }
        if (this == obj) {
            return true;
        }

        Grupo rhs = (Grupo) obj;
        return new EqualsBuilder().append(codigo, rhs.codigo).append(nome, rhs.nome).isEquals();
    }

    @Override
    public String toString() {
        return "Grupo [codigo=" + codigo + ", nome=" + nome + ", superGrupo=" + superGrupo + "]";
    }

}

Classe PermissaoConteudo

package br.christus.sigeu.seguranca.domain;

import java.io.Serializable;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

public class PermissaoConteudo implements Serializable {

    /**
     * Serializable
     */
    private static final long serialVersionUID = 1L;

    // cdGrupo
    private Grupo grupo;

    // cdConteudo
    private ConteudoSite conteudoSite;

    public PermissaoConteudo() {

    }

    public PermissaoConteudo(Grupo grupo, ConteudoSite conteudoSite) {
        super();
        this.grupo = grupo;
        this.conteudoSite = conteudoSite;
    }

    public Grupo getGrupo() {
        return grupo;
    }

    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }

    public ConteudoSite getConteudoSite() {
        return conteudoSite;
    }

    public void setConteudoSite(ConteudoSite conteudoSite) {
        this.conteudoSite = conteudoSite;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(grupo.getCodigo()).append(conteudoSite.getCodigo()).toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof PermissaoConteudo)) {
            return false;
        }
        if (this == obj) {
            return true;
        }

        PermissaoConteudo rhs = (PermissaoConteudo) obj;
        return new EqualsBuilder().append(grupo.getCodigo(), rhs.getGrupo().getCodigo()).append(conteudoSite.getCodigo(), rhs.getConteudoSite().getCodigo()).isEquals();
    }

    @Override
    public String toString() {
        return "PermissaoConteudo [Grupo=" + grupo.getCodigo() + ", ConteudoSite=" + conteudoSite.getCodigo() + "]";
    }
}

Classe ConteudoSite

package br.christus.sigeu.seguranca.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

public class ConteudoSite implements Serializable {

    /**
     * Serializable
     */
    private static final long serialVersionUID = 1L;

    // cdConteudo
    private Integer codigo;

    // dsConteudo
    private String descricao;

    // dsAtributo
    private String atributo;

    private Set<Grupo> grupos = new HashSet<Grupo>();

    public ConteudoSite() {

    }

    public ConteudoSite(Integer codigo) {
        super();
        this.codigo = codigo;
    }

    public ConteudoSite(Integer codigo, String descricao, String atributo) {
        super();
        this.codigo = codigo;
        this.descricao = descricao;
        this.atributo = atributo;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getAtributo() {
        return atributo;
    }

    public void setAtributo(String atributo) {
        this.atributo = atributo;
    }

    public Set<Grupo> getGrupos() {
        return grupos;
    }

    public void setGrupos(Set<Grupo> grupos) {
        this.grupos = grupos;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(codigo).append(descricao).toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof ConteudoSite)) {
            return false;
        }
        if (this == obj) {
            return true;
        }

        ConteudoSite rhs = (ConteudoSite) obj;
        return new EqualsBuilder().append(codigo, rhs.codigo).append(descricao, rhs.descricao).isEquals();
    }

    @Override
    public String toString() {
        return "Conteudo [codigo=" + codigo + ", descricao=" + descricao + ", atributo=" + atributo + "]";
    }
}

Meu método de inserção

@RequestMapping(method = RequestMethod.POST, produces = "text/html")
    public String create(@Valid ConteudoSite conteudoSite, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
        try{
        if (bindingResult.hasErrors()) {
            populateEditForm(uiModel, conteudoSite);
            return "seguranca/conteudosite/create";
        }
        uiModel.asMap().clear();

        List<ConteudoSite> conteudos = new ArrayList<ConteudoSite>();
        PermissaoConteudo permissaoConteudo = new PermissaoConteudo();
        conteudos.add(conteudoSite);


        for(ConteudoSite conteudo :  conteudos){
            conteudoSiteService.insertSelective(conteudo);
            permissaoConteudo.setConteudoSite(conteudo);
            permissaoConteudo.setGrupo(grupo);
            permissaConteudoService.insertSelective(permissaoConteudo);
            System.out.println(conteudo.getGrupos());
        }

        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return "redirect:/mvc/conteudosSite?list";
    }

metodo DAO

    @Transactional
    public void insertSelective(PermissaoConteudo record) {
        permissaoConteudoMapper.insertSelective(record);
    }
  • Coloca o conteúdo dentro da tag de code para ficar mais legível :D ty

    Denis Soares Moreira   27 de out de 2015
  • Utilize os marcadores ``` (três apóstrofos) antes e depois do código para ficar formatado.

    Douglas Junior   27 de out de 2015
  • Meu problema esta na inclusão do método insertSelective. Porque minha classe PermissaConteudo espera por um objeto Grupo, mas preciso passar uma lista de Grupos, que será associado a um mesmo conteudo.

    Denis   27 de out de 2015
  • Adciona o metodo do DAO onde você efetua a inserção real do objeto

    Denis Soares Moreira   27 de out de 2015
  • Gerou algum erro?

    Krismorte   29 de out de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags spring-mvc java-ee ou faça a sua própria pergunta.