Dúvida com mapeamento hibernate

Eu tenho um relacionamento
de funcionarios e departamento

um departamento tem vários funcionarios
e um funcionario tem apenas um departamento

1:n

eu tou com dúvida em como eu mapearia a classe funcionario e departamento

classe funcionario:

@Entity(name = "Funcionario")
@Table(name = "funconario")
public abstract class Funcionario implements Autenticar {
	
	@Id
	@GeneratedValue
	@Column(name = "codFuncionario")
	private String codFuncionario;
	
	private Departamento departamento;
	private Endereco endereco;
	private String nome,cpf,rg,usuario,senha;
	private Date dataEntrada,dataSaida, dataNascimento;
	private Double salario;
// gets and setters 
    
	public String getCodFuncionario() {
		return codFuncionario;
	}

	public void setCodFuncionario(String codFuncionario) {
		this.codFuncionario = codFuncionario;
	}

	public void setSalario(Double salario) {
		this.salario = salario;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public Double getSalario() {
		return salario;
	}


	public String getNome() {
		return nome;
	}

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

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getRg() {
		return rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Date getDataEntrada() {
		return dataEntrada;
	}

	public void setDataEntrada(Date dataEntrada) {
		this.dataEntrada = dataEntrada;
	}

	public Date getDataSaida() {
		return dataSaida;
	}

	public void setDataSaida(Date dataSaida) {
		this.dataSaida = dataSaida;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
//  metodos 

minha classe departamento:

@Entity  
@Table(name="departamento") 
public class Departamento {
	@Id  
	@GeneratedValue  
	private Integer codDepartamento;
	@Column(name="nome")  
	private String nomeDepartamento;
	
	private Set<Funcionario> funcionarios;  
	
    public Departamento() {
    }

	public Integer getCodDepartamento() {
		return codDepartamento;
	}

	public void setCodDepartamento(Integer codDepartamento) {
		this.codDepartamento = codDepartamento;
	}

	public String getNomeDepartamento() {
		return nomeDepartamento;
	}

	public void setNomeDepartamento(String nomeDepartamento) {
		this.nomeDepartamento = nomeDepartamento;
	}  

}

eu tou com dúvida como eu mapearia o funcionario seria com o one to many? ( um funcionario só pode ter um único departamento ) ou one to one?

e departamento ( um departamento tem vários funcionaros) one to many?

obs: tou começando a usar o hibernate por agr a logica é essa?

Na classe Departamento

@OneToMany
private List<Funcionario> funcionarios;

E na classe Funcionario:

@ManyToOne
private Departamento departamento;

vlw man

e em questão do get/set eu preciso usar o many / one tb?

O mapeamento vai ou no atributo ou no getter, não se duplica.

1 curtida

eu tinha olhado um tutorial da jboss e fiquei um pouco confuso pq ele fez isso:

  private static final long serialVersionUID = 1L;  
  @Id  
  @GeneratedValue  
  @Column(name="id")  
  private Integer id;  
  
  @Column(name="name")  
  private String name;  
  
  @ManyToOne  
  @JoinColumn(name="sale_id", referencedColumnName="id",nullable=false)  
  private Sale sale;  
  
  @OneToMany()  
  public Integer getId() {  
      return id;  
  }  

colocou manytoone
e one to many no id

eu fiz assim na classe funcionario:

@Entity(name = "Funcionario")
@Table(name = "funconario")
public abstract class Funcionario implements Autenticar {
	
	@Id
	@GeneratedValue
	@Column(name = "codFuncionario")
	private String codFuncionario;
	@ManyToOne  
	@JoinColumn(name="departamento_codDepart", referencedColumnName="codDepart",nullable=false)  
	private Departamento departamento;
	private Endereco endereco;
	private String nome,cpf,rg,usuario,senha;
	private Date dataEntrada,dataSaida, dataNascimento;
	private Double salario;
	

// gets and setters 
	public String getCodFuncionario() {
		return codFuncionario;
	}

eu precisaria por o one to many no getCodFuncionario?
Eu fiquei um pouco perdido nesse examplo do jboss, por qual motivo ele botou o onetomany no id da classe sale