Estou com probelmas ao utilizar a abordagem de tabela por classe do Hibernate. Tenho uma tabela para cada classe da hierarquia, sejam elas abstratas ou não. Na documentação do Hibernate oq encontrei eh que essa abordagem é mapeada usando-se <joined-subclass>, porem um erro está acontecendo quando tento recuperar um objeto do tipo da super classe. Segue o mapeamento do Hibernate e o erro que está aparendo:
1. <?xml version="1.0"?>
2. <!DOCTYPE hibernate-mapping PUBLIC
3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
5.
6. <hibernate-mapping>
7. <class name="br.com.aaaaa.core.venda.Venda" table="vendas">
8. <id name="codigo" column="codigo_venda">
9. <generator class="native">
10. <param name="sequence">codigo_venda_sequence</param>
11. </generator>
12. </id>
13.
14. <property name="dataRealizacao" column="data_realizacao" />
15.
16. <set name="itens" cascade="save-update">
17. <key column="codigo_venda" />
18. <one-to-many class="br.com.aaaaa.core.venda.ItemVenda" />
19. </set>
20.
21. <!-- DECLARAÇÃO DE SUBCLASSE - Pedido -->
22. <joined-subclass name="br.com.aaaaa.core.venda.Pedido" table="pedidos">
23. <key column="codigo_pedido" />
24.
25. <many-to-one name="cliente"
26. class="br.com.aaaaa.core.cliente.Cliente" not-null="true" />
27.
28. <property name="dataEntrega" column="data_entrega" not-null="true" />
29. </joined-subclass>
30. </class>
31. </hibernate-mapping>
1. Hibernate:
2. select
3. produto0_.codigo_produto as codigo1_3_,
4. produto0_1_.nome as nome3_,
5. produto0_1_.preco as preco3_,
6. produto0_1_.descricao as descricao3_,
7. produto0_.codigo_tipo_produto as codigo2_4_
8. from
9. produtos produto0_
10. inner join
11. estocaveis produto0_1_
12. on produto0_.codigo_produto=produto0_1_.codigo_estocavel
13. 10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
14. WARNING: SQL Error: 0, SQLState: 42703
15. 10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
16. SEVERE: ERROR: column venda0_1_.cliente does not exist
17. Hibernate:
18. select
19. venda0_.codigo_venda as codigo1_18_,
20. venda0_.data_realizacao as data2_18_,
21. venda0_1_.cliente as cliente19_,
22. venda0_1_.data_entrega as data3_19_,
23. case
24. when venda0_1_.codigo_pedido is not null then 1
25. when venda0_.codigo_venda is not null then 0
26. end as clazz_
27. from
28. vendas venda0_
29. left outer join
30. pedidos venda0_1_
31. on venda0_.codigo_venda=venda0_1_.codigo_pedido
Pelo que entendi do erro ele está reclamando pq a tablea de vendas não tem uma coluna cliente, mas o objeto venda n tem, quem tem eh o objeto pedido. O estranho é que com esse mapeamente consigo inserir objetos do tipo venda normalmente no banco, o problema reside somente na hora de obter. Alguém tem ideia do q pode ser?
Desde já agradeço.