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 , 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:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.aaaaa.core.venda.Venda" table="vendas">
<id name="codigo" column="codigo_venda">
<generator class="native">
<param name="sequence">codigo_venda_sequence</param>
</generator>
</id>
<property name="dataRealizacao" column="data_realizacao" />
<set name="itens" cascade="save-update">
<key column="codigo_venda" />
<one-to-many class="br.com.aaaaa.core.venda.ItemVenda" />
</set>
<!-- DECLARAÇÃO DE SUBCLASSE - Pedido -->
<joined-subclass name="br.com.aaaaa.core.venda.Pedido" table="pedidos">
<key column="codigo_pedido" />
<many-to-one name="cliente"
class="br.com.aaaaa.core.cliente.Cliente" not-null="true" />
<property name="dataEntrega" column="data_entrega" not-null="true" />
</joined-subclass>
</class>
</hibernate-mapping>
Hibernate:
select
produto0_.codigo_produto as codigo1_3_,
produto0_1_.nome as nome3_,
produto0_1_.preco as preco3_,
produto0_1_.descricao as descricao3_,
produto0_.codigo_tipo_produto as codigo2_4_
from
produtos produto0_
inner join
estocaveis produto0_1_
on produto0_.codigo_produto=produto0_1_.codigo_estocavel
10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 42703
10/05/2008 22:54:18 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: column venda0_1_.cliente does not exist
Hibernate:
select
venda0_.codigo_venda as codigo1_18_,
venda0_.data_realizacao as data2_18_,
venda0_1_.cliente as cliente19_,
venda0_1_.data_entrega as data3_19_,
case
when venda0_1_.codigo_pedido is not null then 1
when venda0_.codigo_venda is not null then 0
end as clazz_
from
vendas venda0_
left outer join
pedidos venda0_1_
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.