java - Problems when fetching data from inherited classes on hibernate -
in project have following superclass , inheritants:
public class pessoa
public class pessoajuridica extends pessoa
public class cliente extends pessoajuridica
, i'm using table per subclass inheritance method in hibernate. insertions done correctly, when try query pessoa class passin id parameter, returns data last class of inheritance tree only.
so, when call
query qry = session.createquery("from pessoa id = :id"); qry.setparameter("id", 17); system.out.println( qry.list() ); it prints record of registry id = 17 cliente's class...
am doing wrong code? below sources of project.
database script
create table public.endereco ( _id integer not null default nextval('endereco__id_seq'::regclass), tipo character(1), endereco character varying(255), numero bigint, complemento character varying(100), bairro character varying(100), cidade character varying(100), uf character varying(2), cep character varying(9), status character(1), constraint endereco_pkey primary key (_id), constraint endereco_status_check check (status = (array['a'::bpchar, 'i'::bpchar])), constraint endereco_tipo_check check (tipo = (array['p'::bpchar, 'c'::bpchar, 'e'::bpchar])) ) create table public.pessoa ( _id integer not null default nextval('pessoa__id_seq'::regclass), id_endereco integer, nome character varying(255), status character(1), constraint pessoa_pkey primary key (_id), constraint fk_pessoa_endereco foreign key (id_endereco) references public.endereco (_id) match simple on update no action on delete no action, constraint pessoa_status_check check (status = (array['a'::bpchar, 'i'::bpchar])) ) create table public.pessoa_juridica ( id_pessoa integer not null, cnpj character varying(20), insc_est character varying(20), razao_social character varying(255), constraint pessoa_juridica_pkey primary key (id_pessoa), constraint fk_pj_pessoa foreign key (id_pessoa) references public.pessoa (_id) match simple on update no action on delete no action ) create table public.cliente ( id_pessoa integer not null, telefone character varying(15), constraint fk_cli_pjuridica foreign key (id_pessoa) references public.pessoa (_id) match simple on update no action on delete no action ) classes
public class endereco { private int _id; private char tipo; private string endereco; private long numero; private string complemento; private string bairro; private string cidade; private string uf; private string cep; private char status; private set<pessoa> pessoas; //getters + setters } public class pessoa { private int _id; private endereco endereco; private string nome; private char status; } public class pessoajuridica extends pessoa { private string razaosocial; private string cnpj; private string inscricaoestadual; } public class cliente extends pessoajuridica{ private string telefone; } test class
public class testaselectcliente { public static void main(string[] args){ sessionfactory sf = hibernateutil.getsessionfactory(); session session = sf.opensession(); session.begintransaction(); query qry = session.createquery("from pessoa"); system.out.println(qry.list()); query qry1 = session.createquery("from pessoa id= :id"); qry1.setparameter("id", 17); system.out.println(qry1.list()); } } qry output: [cliente(telefone=(46)3225 - 6234), pessoajuridica(razaosocial=francisco s/a, cnpj=087.971.169-80, inscricaoestadual=4.863.828), pessoafisica(cpf=087.971.169-80, rg=4.863.828, datanascimento=2016-01-27)]
records tables<qry1 output: [cliente(telefone=(46)3225 - 6234)]
data last class on hierarchy table.<
what doing wrong / forgetting do?
here's mapping xml:
<joined-subclass name="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoafisica" extends="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoa" table="pessoa_fisica" > <key column="id_pessoa" /> <property name="cpf" column="cpf" /> <property name="rg" column="rg" /> <property name="datanascimento" type="date" column="data_nascimento" /> </joined-subclass> <joined-subclass name="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoajuridica" extends="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoa" table="pessoa_juridica" > <key column="id_pessoa" /> <property name="razaosocial" column="razao_social" /> <property name="cnpj" column="cnpj" /> <property name="inscricaoestadual" column="insc_est" /> <joined-subclass name="br.com.koinonia.igrejahabil.model.entities.pessoa.juridica.cliente" extends="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoajuridica" table="cliente" > <key column="id_pessoa" /> <property name="telefone" column="telefone" /> </joined-subclass> </joined-subclass> </class> <class name="br.com.koinonia.igrejahabil.model.entities.endereco.endereco" table="endereco" > <id name="_id" column="_id"> <generator class="native" /> </id> <property name="endereco" column="endereco" /> <property name="numero" column="numero" /> <property name="complemento" column="complemento" /> <property name="bairro" column="bairro" /> <property name="cidade" column="cidade" /> <property name="uf" column="uf" /> <property name="cep" column="cep" /> <property name="tipo" column="tipo" type="character" /> <property name="status" column="status" type="character" /> <set name="pessoas" table="pessoa" inverse="true" lazy="true" fetch="select"> <key column="_id" not-null="true" /> <one-to-many class="br.com.koinonia.igrejahabil.model.entities.pessoa.pessoa"/> </set> </class>
Comments
Post a Comment