Problemas com salvar

2 respostas
A

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.

@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;
@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;
@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) {

		}
	}

2 Respostas

franz_Ozil

eai man, acho que você deve ter controle onde vc deve verificar o tipo de pessoa e direcionala para o seu respectivo metodo .

igor_ks

Está salvando só Pessoa, pq vc ta dando um Save em somente uma entidade Pessoa…

Se vc pegar e fazer um new PessoaFisica(); e salvar ele, ai vc tera um objeto PessoaFisica salvo…

Criado 19 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 2
Participantes 3