Boa noite eu estou passando pela seguinte situação:
Tenho uma classe Pessoa e a partir dela extendem PessoaFisica e PessoaJuridica. Quando eu tento salvar pessoa a partir do meu DAO. Eu consigo salvar apenas os dados de pessoa. Alguém poderá me ajudar ?.
Abaixo segue as minhas classes e a estrutura das camadas.
[code]@Entity
@Inheritance(strategy= InheritanceType.JOINED)
public class Pessoa implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
@OneToMany(mappedBy = "pessoa")
private List<Endereco> enderecos;
@OneToMany(mappedBy = "pessoa")
private List<Telefone> telefones;
private String email;
@OneToMany(mappedBy = "pessoa")
private List<Autorizacao> roles;
@OneToMany(mappedBy = "pessoa")
private List<Documento> documentos;
private Boolean ativo = true;[/code]
[code]@Entity
public class PessoaFisica extends Pessoa {
private static final long serialVersionUID = 1L;
@Column(length = 60)
private String pai;
@Column(length = 60, nullable = false)
private String mae;
@Column(length = 30, nullable = false)
private String naturalidade;
@Column(length = 60, nullable = false)
private String nome;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private EstadoCivil estadoCivil;
@Column(length = 1, nullable = false)
private String sexo;[/code]
@Entity
public class PessoaJuridica extends Pessoa {
private static final long serialVersionUID = 1L;
@Column(length = 60, nullable = false)
private String nomeFantasia;
@Column(length = 60, nullable = false)
private String razaoSocial;
@Column(length = 60, nullable = false, unique = true)
private String cnpj;
//========================GETTR'S AND SETTER'S=================//
public class PessoaDAOJPA extends GenericDAO<Pessoa, Integer> implements
PessoaDAO {
private static final long serialVersionUID = 1L;
@Override
public Pessoa salvar(Pessoa pessoa) {
return super.save(pessoa);
}
@Stateless
public class PessoaServiceImp implements PessoaService, Serializable {
private static final long serialVersionUID = 1L;
private static final Logger logger = Logger.getLogger(Pessoa.class);
@Inject
private PessoaDAO pessoaDAO;
@Override
public Pessoa salvar(Pessoa pessoa) throws EntityAlreadException {
//Busca uma Pessoa já cadastrada
Pessoa result = pessoaDAO.pesquisarPessoa(pessoa, true);
if(result != null){
String mensagem = "Pessoa já existe no sistema";
logger.warn(mensagem);
throw new EntityAlreadException(mensagem);
}
return pessoaDAO.salvar(pessoa);
}
@ViewScoped
@ManagedBean(name = "funcionarioController")
public class FuncionarioController {
private String parametroPesquisa;
private PessoaFisica funcionarioCorrente;
private List<PessoaFisica> listaDePessoaFuncionario;
/**Injecoes**/
@EJB
private PessoaService pessoaService;
public void salvarFuncionario(){
try {
funcionarioCorrente.addEnderecos(endereco);
pessoaService.salvar(funcionarioCorrente);
} catch (Exception e) {
}
}