Dúvida sobre @Inheritance(strategy = JOINED)

3 respostas
java
R

Ola, boa tarde,

Tenho uma dúvida sobre o @Inheritance(strategy = JOINED). Quando se usa essa técnica para criação de herança, na qual são criadas uma tabela principal e duas tabelas com os valores que são diferentes compartilhando a chave primária e se faz uma consulta apenas em uma tabela “filha” da hierarquia a consulta retorna todos os dados da tabela “pai” também como se fosse um FetchType.EAGER?
Na empresa que trabalho usa a técnica de @Inheritance(strategy = JOINED) e todas as consultas estão retornando todas as tabelas inteiras e não usamos o FetchType.EAGER em nenhum momento nas tabelas “filhas” e nem na tabela “pai”. Se alguém souber de algo agradeço.

3 Respostas

lucciano01

no JPA os relacionamentos por default são LAZY, mas mesmo assim são carregados os objetos dos relacionamentos, para vc ter uma ideia de como está sua consulta acrescente esta propriedade no persistence.xml. <property name="hibernate.show_sql" value="true"/>. Você verá quantos JOIN o JPA faz por conta própria. Uma dica seria vc revisar suas consultas e "trazer" realmente o que vc precisa, ao invés de utilizar o *

jhoamaral

Pra qualquer tipo de herança em JPA quando você consulta o subtipo ele traz todos os dados da tabela pai.
Relacionamentos @OneToMany por padrão são EAGER
Relacionamentos @ManyToOne por padrão são LAZY.

R

Vou dar uma olhada nisso, mas uma pergunta não é ao contrário, @OneToMany por default é LAZY e @ManyToOne por default é EAGER?
https://docs.oracle.com/javaee/5/api/javax/persistence/ManyToOne.html
Pelo que pesquisei é ao contrário.
Bom irei verificar.

Criado 15 de fevereiro de 2016
Ultima resposta 18 de fev. de 2016
Respostas 3
Participantes 3