2
respostas

Hibernate não insere o valor da chave estrangeira

Olá,

Estou criando uma aplicação e seguindo os passos do curso! Uma coisa que vem ocorrendo onde meu identificado da chave estrangeira id_empresa não está sendo preenchida pelo hibernate, ele preenche com um valor null, como mostrado na imagem ! Alguém já passou por este tipo de problemas?

http://imgur.com/a/WoVnZ

CONTROLLER

@Controller
@RequestMapping("categoria")
public class CategoriaController {

    @Autowired
    private CategoriaDao c;     

    @RequestMapping(method=RequestMethod.POST)
    public String adicionar(Categoria categoria,HttpSession s,HttpServletRequest request) {

        Long idEmpresa = (Long) s.getAttribute("idEmpresa");
        String nome = (String) request.getAttribute("nome");
        System.out.println(nome);        

        c.Adicionar(categoria,idEmpresa);

        return "includes/ok";
    }

}

DAO

@Repository
@Transactional
public class CategoriaDao {
    @PersistenceContext
    private EntityManager manager;

    public void Adicionar(Categoria cat,Long idEmpresa) {
        Empresa empresa = manager.find(Empresa.class, idEmpresa);
        List<Categoria> lCategoria = empresa.getCategoria();
        lCategoria.add(cat);
        empresa.setCategoria(lCategoria);
    }
}

MODEL EMPRESA

package br.com.ugear.models;

@Entity
public class Empresa {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String nome;
    private String cnpj;
    private String tel;
    private String cel;
    private String email;
    private String cidade;
    private String estado;
    private String rua;
    private String bairro;
    private String cep;

    @OneToMany(mappedBy="empresa",cascade = CascadeType.ALL)
    private List<Usuario> usuario;
    @OneToMany(mappedBy="empresa",cascade = CascadeType.ALL)
    private List<Categoria> categoria;

    public List<Categoria> getCategoria() {
        return categoria;
    }

    public void setCategoria(List<Categoria> categoria) {
        this.categoria = categoria;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

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

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getCel() {
        return cel;
    }

    public void setCel(String cel) {
        this.cel = cel;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public List<Usuario> getUsuario() {
        return usuario;
    }

    public void setUsuario(List<Usuario> usuario) {
        this.usuario = usuario;
    }
}

MODEL CATEGORIA

@Entity
public class Categoria {

        @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long id;
        private String nome;
        @OneToMany
        private List<Subcategoria> subcategoria;
        @OneToMany
        private List<Conteudo> conteudo;
        @ManyToOne
        private Empresa empresa;

        public long getId() {
            return id;
        }

        public void setId(long id) {
            this.id = id;
        }

        public String getNome() {
            return nome;
        }

        public Empresa getEmpresa() {
            return empresa;
        }

        public void setEmpresa(Empresa empresa) {
            this.empresa = empresa;
        }

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

        public List<Conteudo> getConteudo() {
            return conteudo;
        }

        public void setConteudo(List<Conteudo> conteudo) {
            this.conteudo = conteudo;
        }

        public List<Subcategoria> getSubcategoria() {
            return subcategoria;
        }

        public void setSubcategoria(List<Subcategoria> subcategoria) {
            this.subcategoria = subcategoria;
        }
}
2 respostas

Oi, tudo bem ?

Parece que na sua sessão não tem esse atributo. Por esse motivo esta com valor null. Dá uma olhadinha no seu fluxo e vê se em algum momento você coloca esse parametro na sua sessão.

Oi Matheus,

Já fiz este teste, a session ta recebendo sim esse valor, tanto que na minha tabela de relacionamento entre Empresa -> Usuario ele gera a relação!

Na verdade acho que o problema está na parte do meu DAO, to acompanhando o curso mas não sei se a forma de inserir um nova lista de categoria dentro da minha categoria Empresa está correta!