Boa noite, estou tendo serios problemas com as anotações, tenho a minha classe Funcionario e minha Class Endereco e a minha Classe Cliente. Um detalhe, a minha classe funcionario está ligado a um Endereco e o mesmo para o meu cliente, então as minhas 2 classes estão ligadas a classe Endereco, e quando eu adiciona um funcionario ele adiciona um cliente tbm, Tenho quase certeza que é por causa das minha anotações, como resolver o problema? as classes modelos...
Funcionario
@Entity
@Table
@NamedQueries({
@NamedQuery(name = "Funcionario.listaTodos", query = "Select f from Funcionario f join fetch f.enderecos")
})
public class Funcionario implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long codigo;
@Column(length = 50, nullable = false, unique = true)
private String nome;
@Column
private Double salario;
@Temporal(TemporalType.DATE)
@Column
private Calendar dataContrada = Calendar.getInstance();
@OneToMany(mappedBy = "funcionario", cascade = CascadeType.ALL)
private List<Endereco> enderecos = new ArrayList<Endereco>();
Cliente
@Entity
@Table
public class Cliente implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long codigo;
@Column(length = 50)
private String nome;
@Column
private String tipoPessoa;
@Column
private String cpf;
@Column
private String cnpj;
@Column
private String email;
@Column
private String observacao;
@Column
private Integer celular;
@OneToMany(mappedBy = "cliente", cascade=CascadeType.ALL)
private List<Endereco> enderecos = new ArrayList<Endereco>();
Endereco
@Entity
@Table
public class Endereco implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long codigo;
@Column(length = 50, nullable = false)
private String cidade;
@Column(length = 40)
private String bairro;
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
private Funcionario funcionario = new Funcionario();
@ManyToOne(cascade = CascadeType.PERSIST)
private Cliente cliente = new Cliente();