Bom pessoal,
Estou a pouco tempo desenvolvendo em java e confesso que é uma linguagem que é fascinante mais difícil de entender e que em alguns casos dá nó na cabeça.
Procurei muito aqui por assunto semelhante ao meu mais de todos que li mesmo assim só fiquei mais confuso.
Meu caso:
- Mapeamento ManyToOne a chave estrangeira na grava da tabela filha.
Tenho a classe Empresa (onde uma empresa pode ter varios usuarios)
Tenho a clase Usuario (onde vários usuarios pode estar relacionado a uma empresa);
/****/
package br.com.fransys.erp.empresa;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
import br.com.fransys.erp.usuario.Usuario;
@Entity
public class Empresa {
@Id
@GeneratedValue
private Integer codemp; // codigo da empresa
private String nomemp; // nome da empresa
private Integer qtdusu; // quantidade de usuarios do sistema desta empresa
private String sitemp; // status de situação da empresa (ativo / inativo)
@OneToMany(cascade={CascadeType.PERSIST}, mappedBy = "empresa" )
private List<Usuario> usuarios = new ArrayList<Usuario>();
public List<Usuario> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<Usuario> usuarios) {
this.usuarios = usuarios;
}
public Integer getCodemp() {
return codemp;
}
public void setCodemp(Integer codemp) {
this.codemp = codemp;
}
public String getNomemp() {
return nomemp;
}
public void setNomemp(String nomemp) {
this.nomemp = nomemp;
}
public Integer getQtdusu() {
return qtdusu;
}
public void setQtdusu(Integer qtdusu) {
this.qtdusu = qtdusu;
}
public String getSitemp() {
return sitemp;
}
public void setSitemp(String sitemp) {
this.sitemp = sitemp;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codemp == null) ? 0 : codemp.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Empresa other = (Empresa) obj;
if (codemp == null) {
if (other.codemp != null)
return false;
} else if (!codemp.equals(other.codemp))
return false;
return true;
}
}
Classe Usuario
package br.com.fransys.erp.usuario;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import br.com.fransys.erp.empresa.Empresa;
@Entity
@Table(name="usuario")
public class Usuario implements Serializable {
@Id
@GeneratedValue
private Integer codigo;
private String nome;
private String email;
@org.hibernate.annotations.NaturalId
private String login;
private String senha;
private Date nascimento;
private String cpfcnp;
private String celular;
private String idioma;
private boolean ativo;
@ManyToOne(cascade = CascadeType.PERSIST, optional = false, fetch = FetchType.EAGER)
@JoinColumn(name="codemp", nullable = false, referencedColumnName = "codemp", foreignKey = @ForeignKey(name = "fk_usuario_empresa"))
private Empresa empresa;
@ElementCollection(targetClass = String.class)
@JoinTable(
name = "usuario_permissao",
uniqueConstraints = {@UniqueConstraint(columnNames = {"usuario","permissao"})},
joinColumns = @JoinColumn(name="usuario"))
@Column(name = "permissao", length=50)
private Set<String> permissao = new HashSet<String>();
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCpfcnp() {
return cpfcnp;
}
public void setCpfcnp(String cpfcnp) {
this.cpfcnp = cpfcnp;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Date getNascimento() {
return nascimento;
}
public void setNascimento(Date nascimento) {
this.nascimento = nascimento;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getIdioma() {
return idioma;
}
public void setIdioma(String idioma) {
this.idioma = idioma;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public Set<String> getPermissao() {
return permissao;
}
public void setPermissao(Set<String> permissao) {
this.permissao = permissao;
}
Metodo Salvar UsuarioBean
public String salvar(){
/*
this.destinoSalvar = "usuariosucesso";
this.usuario = new Usuario();
this.usuario.setAtivo(true);
*/
this.destinoSalvar = "usuariosucesso";
this.usuario.setAtivo(true);
this.usuario.setEmpresa(empresa);
FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha();
if(!senha.equals(this.confirmarSenha)){
FacesMessage facesMessage = new FacesMessage("A senha não foi confirmada corretamente!");
context.addMessage(null, facesMessage);
return null;
}
UsuarioRN usuarioRN = new UsuarioRN();
usuarioRN.salvar(this.usuario);
return this.destinoSalvar;
}