Entidade Pessoa Juridica
@Entity
@PrimaryKeyJoinColumn(name = "CD_PESSOA")
@Table(name="JURIDICA")
public class PessoaJuridica extends Pessoa implements Serializable{
@Column(name="CNPJ",insertable=true,length=20,nullable=false,unique=true)
private String cnpj;
@Column(name="RAZAOSOCIAL",insertable=true,length=90,nullable=false)
private String razaosocial;
@Column(name ="DT_FUNDACAO",insertable=true)
@Temporal(javax.persistence.TemporalType.DATE)
private Date datadafundacao;
@Column(name="IE",insertable=true,length=90,nullable=false)
private String ie;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="SOCIOS", joinColumns={@JoinColumn(name="CD_PESSOA_FISICA")},inverseJoinColumns={@JoinColumn(name="CD_PESSOA_JURIDICA")})
private Set<PessoaFisica> fisica = new HashSet<>();
Entidade Telefones
@Entity
@Table(name="TELEFONE")
public class Telefone implements Serializable{
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="CD_TELEFONE",insertable=true,nullable=false,updatable=false)
private Integer codigo;
@ManyToOne
@JoinColumn (name="CD_PESSOA")
private Pessoa pessoa;
@Column(name = "NUMERO",insertable=true,length=16,nullable=false)
private String numero;
@Column(name="TIPO",insertable=true,nullable=false)
private int tipo;
Método Telefone que lista todos os telefones de uma determinada pessoa…
@Override
public List<Telefone> listar(Integer codigoPessoa) {
try{
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
ts = session.beginTransaction();
Criteria c = this.session.createCriteria(Telefone.class).createAlias("pessoa", "p");
c.add(Restrictions.eq("p.codigo", codigoPessoa));
return c.list();
}catch (HibernateException erro){
System.out.println(erro.getMessage());
ts.rollback();
return null;
}finally{
try{
if(this.session.isOpen()){
this.session.close();
}
}catch(Throwable e){
}
}
}
SQL
select
this_.CD_TELEFONE as CD1_7_2_,
this_.NUMERO as NUMERO7_2_,
this_.CD_PESSOA as CD4_7_2_,
this_.TIPO as TIPO7_2_,
p1_.CD_PESSOA as CD1_5_0_,
p1_.CEP as CEP5_0_,
p1_.AGENCIA as AGENCIA5_0_,
p1_.BAIRRO as BAIRRO5_0_,
p1_.BANCO as BANCO5_0_,
p1_.CIDADE as CIDADE5_0_,
p1_.COMPLEMENTO as COMPLEME7_5_0_,
p1_.CONTA as CONTA5_0_,
p1_.ENDERECO as ENDERECO5_0_,
p1_.ESTADO as ESTADO5_0_,
p1_.NUMERO as NUMERO5_0_,
p1_.TP as TP5_0_,
p1_.UF as UF5_0_,
p1_1_.CPF as CPF8_0_,
p1_1_.DH_CADASTRO as DH2_8_0_,
p1_1_.ESTADO_CIVIL as ESTADO3_8_0_,
p1_1_.NACIONALIDADE as NACIONAL4_8_0_,
p1_1_.NOME as NOME8_0_,
p1_1_.PROFISSAO as PROFISSAO8_0_,
p1_1_.RG as RG8_0_,
p1_1_.TRATAMENTO as TRATAMENTO8_0_,
p1_2_.CNPJ as CNPJ9_0_,
p1_2_.DT_FUNDACAO as DT2_9_0_,
p1_2_.IE as IE9_0_,
p1_2_.RAZAOSOCIAL as RAZAOSOC4_9_0_,
case
when p1_1_.CD_PESSOA is not null then 1
when p1_2_.CD_PESSOA is not null then 2
when p1_.CD_PESSOA is not null then 0
end as clazz_0_,
fisica4_.CD_PESSOA_FISICA as CD1_5_4_,
pessoafisi5_.CD_PESSOA as CD2_4_,
pessoafisi5_.CD_PESSOA as CD1_5_1_,
pessoafisi5_1_.CEP as CEP5_1_,
pessoafisi5_1_.AGENCIA as AGENCIA5_1_,
pessoafisi5_1_.BAIRRO as BAIRRO5_1_,
pessoafisi5_1_.BANCO as BANCO5_1_,
pessoafisi5_1_.CIDADE as CIDADE5_1_,
pessoafisi5_1_.COMPLEMENTO as COMPLEME7_5_1_,
pessoafisi5_1_.CONTA as CONTA5_1_,
pessoafisi5_1_.ENDERECO as ENDERECO5_1_,
pessoafisi5_1_.ESTADO as ESTADO5_1_,
pessoafisi5_1_.NUMERO as NUMERO5_1_,
pessoafisi5_1_.TP as TP5_1_,
pessoafisi5_1_.UF as UF5_1_,
pessoafisi5_.CPF as CPF8_1_,
pessoafisi5_.DH_CADASTRO as DH2_8_1_,
pessoafisi5_.ESTADO_CIVIL as ESTADO3_8_1_,
pessoafisi5_.NACIONALIDADE as NACIONAL4_8_1_,
pessoafisi5_.NOME as NOME8_1_,
pessoafisi5_.PROFISSAO as PROFISSAO8_1_,
pessoafisi5_.RG as RG8_1_,
pessoafisi5_.TRATAMENTO as TRATAMENTO8_1_
from
TELEFONE this_
inner join
PESSOA p1_
on this_.CD_PESSOA=p1_.CD_PESSOA
left outer join
FISICA p1_1_
on p1_.CD_PESSOA=p1_1_.CD_PESSOA
left outer join
JURIDICA p1_2_
on p1_.CD_PESSOA=p1_2_.CD_PESSOA
left outer join
SOCIOS fisica4_
on p1_.CD_PESSOA=fisica4_.CD_PESSOA_FISICA
left outer join
FISICA pessoafisi5_
on fisica4_.CD_PESSOA_JURIDICA=pessoafisi5_.CD_PESSOA
left outer join
PESSOA pessoafisi5_1_
on pessoafisi5_.CD_PESSOA=pessoafisi5_1_.CD_PESSOA
where
p1_.CD_PESSOA=1