Relacionamento Pedido e Pessoa

2 respostas
fabianofrizzo

Boa Noite Galera…

Primeiramente gostaria de pedir desculpas se este não for o lugar certo para postar esta duvida.

Bom to com uma duvida aqui tremenda… Como eu posso fazer o relacionamento entre Pedido E Cliente…

Vou postar os código das classes a baixo acho que vai ficar mais facil de entender a minha dificuldade de raciocinio

Classe Pesso

package bean;

//Imports

@Entity
@Table(name="tbPessoa", schema="public")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="pesTipo", discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="pessoa")
public class Pessoa implements Serializable, PessoaInterface {

	private static final long serialVersionUID = 1L;
	
	@Id
	@SequenceGenerator(name="genPessoa", sequenceName="genPessoa", initialValue=1)
	@GeneratedValue(generator="genPessoa", strategy=GenerationType.AUTO)
	private Integer pesCod;
	private String pesNome;
	private String pesNomeCel;
	private String pesFone;
	private String pesFax;
	private String pesCel;
	
	@OneToMany(mappedBy="pessoa")
	private List<Endereco> enderecos;
	
	public Pessoa() {
		// TODO Auto-generated constructor stub
	}

       //Getter's e Setter's
}

Classe PessoaFisica

package bean;

//Import's

@Entity
@Table(name="tbPessoaFisica")
@DiscriminatorColumn(discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="pesFisica")
public class PessoaFisica extends Pessoa implements Serializable, PessoaInterface {

	private static final long serialVersionUID = 1L;
	
	private String pfCpf;
	private String pfRg;
	private String pfRgUf;
	private Date pfDtNascimento;
	private String pfNomePai;
	private String pfNomeMae;
	
	private String pfEmpresa;
	private String pfEmpresaFone;
	private String pfEmpresaAdmisao;
	private String pfEmpresaResp;
	
	public PessoaFisica() {
		// TODO Auto-generated constructor stub
	}

        //Getter's e Setter's
}

Classe PessoaJuridica

package bean;

//Import's

@Entity
@Table(name="tbPessoaJuridica")
@DiscriminatorColumn(discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="pesJuridica")
public class PessoaJuridica extends Pessoa implements Serializable, PessoaInterface {

	private static final long serialVersionUID = 1L;
	
	private String pjCnpj;
	private String pjIe;
	
	public PessoaJuridica() {
		// TODO Auto-generated constructor stub
	}

        //Getter's e Setter's
}

Classe Pedido

package bean;

//Import's

@Entity
@Table(name="tbPedido", schema="public")
public class Pedido implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@SequenceGenerator(name="genPedido", sequenceName="gendPedido", initialValue=1)
	@GeneratedValue(generator="genPedido", strategy=GenerationType.AUTO)
	private Integer pedCod;
	private Date pedData;
	private Date pedDataEntrega;
	
	private Pessoa pessoa

	
	public Pedido() {
		// TODO Auto-generated constructor stub
	}
}

Ali eu Coloquei uma atributo do tipo Pessoa.

Mas o Cliente pode ser tanto Juridica como Fisica como posso fazer esta associação…

Só que eu não faço a minima ideia de como fazer isto…

Alguém poderia me dar uma luz

Muito Obrigado pela atenção de todos

2 Respostas

P

Tá ai uma das principais vantagens de ser usar OO, generalização.

Faça da forma que vc está fazendo... na classe crie o atributo Pessoa genérico. Qdo precisar utilizar a pessoa do pedido faça um casting para saber qual é a especialização (tipo) pessoa.

O seu código será mais ou menos assim:

PessoaFisica pf = new PessoaFisica();
Pedido p = new Pedido()
p.setPedCod(XXXX);
p.setPessoa(pf);

ou

PessoaJuridica pj = new PessoaJuridica();
Pedido p = new Pedido()
p.setPedCod(XXXX);
p.setPessoa(pj);

e pra recuperar o dado vc faz assim:

Pedido ped = DAOPedido.getPedido(XXX);
if (ped.getPessoa() instanceof PessoJuridica)
    System.out.println("pessoa juridica");
if (ped.getPessoa() instanceof PessoFisica)
    System.out.println("pessoa fisica");
fabianofrizzo
palmadias:
Tá ai uma das principais vantagens de ser usar OO, generalização.

Faça da forma que vc está fazendo... na classe crie o atributo Pessoa genérico. Qdo precisar utilizar a pessoa do pedido faça um casting para saber qual é a especialização (tipo) pessoa.

O seu código será mais ou menos assim:

PessoaFisica pf = new PessoaFisica();
Pedido p = new Pedido()
p.setPedCod(XXXX);
p.setPessoa(pf);

ou

PessoaJuridica pj = new PessoaJuridica();
Pedido p = new Pedido()
p.setPedCod(XXXX);
p.setPessoa(pj);

e pra recuperar o dado vc faz assim:

Pedido ped = DAOPedido.getPedido(XXX);
if (ped.getPessoa() instanceof PessoJuridica)
    System.out.println("pessoa juridica");
if (ped.getPessoa() instanceof PessoFisica)
    System.out.println("pessoa fisica");

Eu tinha pensado em fazer desta forma mas achei que não seria o mais correto...

Mas Obrigado pela sua atenção

Criado 24 de julho de 2008
Ultima resposta 25 de jul. de 2008
Respostas 2
Participantes 2