1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Herança Hibernate - Recuperar instancias do filhos ao invés da superclasse

Fala galera!

Eu preciso de algo que, acredito, ser realmente possível, mas não sei se JPA/Hibernate me oferece.

Tenho a seguinte hierarquia:

  • Class A{}
  • Class B extends A{}
  • Class C extends A{}

Eu gostaria de fazer um find na tabela A, mas que o Hibernate criasse objetos das subclasses, mesmo que não existam registros na tabela B ou C, por exemplo:

List<A> list = session.findAll(A.class); // Eu quero instâncias de B ou C e tenho como dizer qual o tipo que preciso.

for(A record : list){
  B b = (B) record; // Gostaria que este cast fosse possível.
}

Muito obrigado!

  • e qual a estrategia que vc esta usando? InheritanceType.TABLE_PER_CLASS ?

    peczenyj   27 de ago de 2014
  • InheritanceType.JOINED

    EmerXavier   27 de ago de 2014
  • Amigo, se vc tem no banco de dados um A, como vc quer criar um C? C é um A, mas A não é um C. Ou a sua modelagem tem algo de muito errada, ou vc precisa de um factory que crie as entidades para vc caso não existam.

    peczenyj   27 de ago de 2014
  • Cara, o problema é o seguinte: primeiro eu insiro um registro em A, sem inserir em B. O que eu quero é pegar o registro inserido em A transformá-lo em B (atualizar o status) e inseri-lo em B. Sempre que insiro em B o Hibernate entende que tem que inserir em A tbm por ser tabela mãe.

    EmerXavier   27 de ago de 2014
  • de novo, parece que a sua modelagem é bastante exotica, talvez vc queira dar um exemplo em alto nivel do que seriam A, B e C.

    peczenyj   27 de ago de 2014
Mostrar todos os 7 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate jpa ou faça a sua própria pergunta.