Hibernate gerando Joins desnecessários

1 resposta
C

Bom dia pessoal, tenho o seguinte problema na minha aplicação.
Possuo as tabelas: Pessoa, PessoaF e Funcionário.
Funcionário herda de Pessoaf e pessoaf herda de Pessoa.
Quando efetuo um select em Pessoa por exemplo, o hibernate está jogando uns Joins com funcionário também. Gostaria de saber se isso é normal, se não for gostaria que me ajudassem a descobrir oque está errado no mapeamento das classes. Segue a baixo as classes. Obs.: Coloquei só o ínicio de cada classe para ficar menor.

@Entity  
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="pessoa")  
public class Pessoa extends LightEntity implements Serializable {
	private static final long serialVersionUID = 17666L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="codigo_pes")
	private Integer codigo;

	@Column(name="bairro_pes")
	private String bairroPes;
@Entity
@PrimaryKeyJoinColumn(name="codigo_pef")
@Table(name="pessoaf")
public class Pessoaf extends Pessoa implements Serializable {
	private static final long serialVersionUID = 65771L;

	@Column(name="datnas_pef")
	private Date datnasPef;

	@Column(name="estciv_pef")
	private Integer estcivPef;
@Entity
@Table(name="funcionario")
@PrimaryKeyJoinColumn(name="codigo_fun")
public class Funcionario extends Pessoaf implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name="datadm_fun")
	private Date datadmFun;

	@Column(name="datdem_fun")
	private Date datdemFun;

Obrigado desde j;a.

1 Resposta

P

Quando vc faz herança no hibernate ele tem 3 modos de criação das tabelas desde juntando tudo em 1 tabela como tudo separado e ai vc escolhe como vc deseja isso conforme a sua necessidade, pelo jeito ele ta separando tudo e por isso ta gerando varios JOINS.

PS: Vc tem um atributo em Pessoa chamado “bairroPes” e como vc sempre vai ter que fazer referencia ao objeto criado da classe Pessoa(ex: pessoa.bairroPes) pra poder utilizar e acessar o atributo não há necessidade de criar prefixos ou suficos no nomes de atributos pra indicar de qual classe esse atributo pertence ficando por exemplo como “pessoa.bairro”

Criado 11 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 1
Participantes 2